详解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计数排序和基数排序算法实例
Apr 25 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
深入解析Python中的变量和赋值运算符
Oct 12 Python
20招让你的Python飞起来!
Sep 27 Python
requests和lxml实现爬虫的方法
Jun 11 Python
python中实现延时回调普通函数示例代码
Sep 08 Python
python实现NB-IoT模块远程控制
Jun 20 Python
python 实现多维数组转向量
Nov 30 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
python如何随机生成高强度密码
Aug 19 Python
PyTorch中的torch.cat简单介绍
Mar 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
JavaScript 对象字面量讲解
2016/06/06 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
python通过floor函数舍弃小数位的方法
2015/03/17 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
python通过索引遍历列表的方法
2015/05/04 Python
python框架django基础指南
2016/09/08 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
《灰椋鸟》教学反思
2014/04/27 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
成本会计实训报告
2014/11/05 职场文书
大学生党员自我评价
2015/03/04 职场文书
行政诉讼答辩状
2015/05/21 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
深度学习tensorflow基础mnist
2021/04/14 Python
详解Redis基本命令与使用场景
2021/06/01 Redis
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android