详解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中使用异步Socket编程性能测试
Jun 25 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
Python2.7读取PDF文件的方法示例
Jul 13 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
TensorFlow平台下Python实现神经网络
Mar 10 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
pymysql 开启调试模式的实现
Sep 24 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
PHP无限分类(树形类)
2013/09/28 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
jQuery checkbox全选/取消全选实现代码
2009/11/14 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
AngularJS集合数据遍历显示的实例
2017/12/27 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python with的用法
2014/08/22 Python
理解Python中的类与实例
2015/04/27 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python 操作文件的基本方法总结
2017/08/10 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
机电一体化职业规划书
2014/01/07 职场文书
高一英语教学反思
2014/01/22 职场文书
运动会通讯稿500字
2014/02/20 职场文书
公司合作协议书范本
2014/04/18 职场文书
2014年党支部学习材料
2014/05/19 职场文书
好人好事演讲稿
2014/09/01 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
2015暑期爱心支教策划书
2015/07/14 职场文书
学习雷锋主题班会
2015/08/14 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python