详解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实现面向对像的ASP程序实例
Nov 10 Python
python中的__slots__使用示例
Feb 26 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Python判断文件和文件夹是否存在的方法
May 21 Python
python比较两个列表大小的方法
Jul 11 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python数据结构dict常用操作代码实例
Mar 12 Python
python中for in的用法详解
Apr 17 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 imagecreatefrombmp 从BMP文件或URL新建一图像
2012/07/16 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
elementUI Tree 树形控件的官方使用文档
2019/04/25 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
Pycharm中切换pytorch的环境和配置的教程详解
2020/03/13 Python
医学检验专业大学生求职信
2013/11/18 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
文明学生标兵事迹
2014/01/21 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
明信片寄语大全
2014/04/08 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
网吧管理制度范本
2015/08/05 职场文书
党校培训学习心得体会
2016/01/06 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
2021/05/25 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android