详解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字典多条件排序方法实例
Jun 30 Python
python单元测试unittest实例详解
May 11 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
python字符串下标与切片及使用方法
Feb 13 Python
详解PyQt5信号与槽的几种高级玩法
Mar 24 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
Python用户自定义异常的实现
Dec 25 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令牌 Token改进版
2008/07/18 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
php实现多城市切换特效
2015/08/09 PHP
Symfony2之session与cookie用法小结
2016/03/18 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
jQuery之网页换肤实现代码
2011/04/30 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
13个PHP函数超实用
2015/10/21 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
深入探究node之Transform
2017/07/20 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python二进制文件的转译详解
2019/07/03 Python
python Django的web开发实例(入门)
2019/07/31 Python
CentOS7下安装python3.6.8的教程详解
2020/01/03 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
2014年质检工作总结
2014/11/26 职场文书
代码复现python目标检测yolo3详解预测
2022/05/06 Python