详解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实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
Sep 06 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
基于pip install django失败时的解决方法
Jun 12 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
python pandas模块基础学习详解
Jul 03 Python
python原类、类的创建过程与方法详解
Jul 19 Python
pip安装python库的方法总结
Aug 02 Python
Python学习工具jupyter notebook安装及用法解析
Oct 23 Python
python中if嵌套命令实例讲解
Feb 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&amp;mysql(五)
2006/10/09 PHP
php strcmp使用说明
2010/04/22 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
PHP 断点续传实例详解
2017/11/11 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
Js利用Canvas实现图片压缩功能
2017/09/13 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
Python自动生产表情包
2017/03/17 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Win10 安装PyCharm2019.1.1(图文教程)
2019/09/29 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2015年推普周活动总结
2015/03/27 职场文书
公司奖励通知
2015/04/21 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL