详解Python3迁移接口变化采坑记


Posted in Python onOctober 11, 2019

1、除法相关

在python3之前,

print 13/4  #result=3

然而在这之后,却变了!

print(13 / 4) #result=3.25

"/”符号运算后是正常的运算结果,那么,我们要想只取整数部分怎么办呢?原来在python3之后,“//”有这个功能:

print(13 // 4) #result=3.25

是不是感到很奇怪呢?下面我们再来看一组结果:

print(4 / 13)   # result=0.3076923076923077
print(4.0 / 13)  # result=0.3076923076923077
print(4 // 13)  # result=0
print(4.0 // 13) # result=0.0
print(13 / 4)   # result=3.25
print(13.0 / 4)  # result=3.25
print(13 // 4)  # result=3
print(13.0 // 4) # result=3.0

2、Sort()和Sorted()函数中cmp参数发生了变化(重要)

在python3之前:

def reverse_numeric(x, y):
  return y - x
print sorted([5, 2, 4, 1, 3], cmp=reverse_numeric)

输出的结果是:[5, 4, 3, 2, 1]

但是在python3中,如果继续使用上面代码,则会报如下错误:

TypeError: 'cmp' is an invalid keyword argument for this function

咦?根据报错,意思是在这个函数中cmp不是一个合法的参数?为什么呢?查阅文档才发现,在python3中,需要把cmp转化为一个key才可以:

def cmp_to_key(mycmp):
  'Convert a cmp= function into a key= function'
  class K:
    def __init__(self, obj, *args):
      self.obj = obj
    def __lt__(self, other):
      return mycmp(self.obj, other.obj) < 0
    def __gt__(self, other):
      return mycmp(self.obj, other.obj) > 0
    def __eq__(self, other):
      return mycmp(self.obj, other.obj) == 0
    def __le__(self, other):
      return mycmp(self.obj, other.obj) <= 0
    def __ge__(self, other):
      return mycmp(self.obj, other.obj) >= 0
    def __ne__(self, other):
      return mycmp(self.obj, other.obj) != 0
  return K

为此,我们需要把代码改成:

from functools import cmp_to_key

def comp_two(x, y):
  return y - x

numList = [5, 2, 4, 1, 3]
numList.sort(key=cmp_to_key(comp_two))
print(numList)

这样才能输出结果!

具体可参考链接:Sorting HOW TO

3、map()函数返回值发生了变化

Python 2.x 返回列表,Python 3.x 返回迭代器。要想返回列表,需要进行类型转换!

def square(x):
  return x ** 2

map_result = map(square, [1, 2, 3, 4])
print(map_result)    # <map object at 0x000001E553CDC1D0>
print(list(map_result)) # [1, 4, 9, 16]

# 使用 lambda 匿名函数
print(map(lambda x: x ** 2, [1, 2, 3, 4]))  # <map object at 0x000001E553CDC1D0>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中分数的相关使用教程
Mar 30 Python
Python psutil模块简单使用实例
Apr 28 Python
python使用socket进行简单网络连接的方法
Apr 29 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
Apr 11 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
django定期执行任务(实例讲解)
Nov 03 Python
Python语言实现将图片转化为html页面
Dec 06 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Python使用GitPython操作Git版本库的方法
Feb 29 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
想学画画?python满足你!
Dec 24 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 #Python
Pycharm 2019 破解激活方法图文详解
Oct 11 #Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 #Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 #Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 #Python
python二进制读写及特殊码同步实现详解
Oct 11 #Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 #Python
You might like
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php计算title标题相似比的方法
2015/07/29 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
JavaScript中立即执行函数实例详解
2017/11/04 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
python实现二分查找算法
2017/09/21 Python
python实现flappy bird小游戏
2018/12/24 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python随机模块random使用方法详解
2020/02/14 Python
java关于string最常出现的面试题整理
2021/01/18 Python
Ibatis如何使用动态表名
2015/07/12 面试题
品质标语大全
2014/06/21 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
春节超市活动方案
2014/08/14 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
师德师风学习材料
2014/12/19 职场文书
考研复习计划
2015/01/19 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
教你用python实现一个无界面的小型图书管理系统
2021/05/21 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
Python jiaba库的使用详解
2021/11/23 Python
mysql幻读详解实例以及解决办法
2022/06/16 MySQL