详解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中为feedparser设置超时时间避免堵塞
Sep 28 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
在Django框架中编写Contact表单的教程
Jul 17 Python
Python爬虫抓取手机APP的传输数据
Jan 22 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
python实现小球弹跳效果
May 10 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
Python Numpy 控制台完全输出ndarray的实现
Feb 19 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
python openssl模块安装及用法
Dec 06 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 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实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
全面了解JavaScript的数据类型转换
2016/07/01 Javascript
JavaScript中闭包之浅析解读(必看篇)
2016/08/25 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
2018/09/16 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
使用python分析git log日志示例
2014/02/27 Python
Python标准库与第三方库详解
2014/07/22 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
Python列表list操作相关知识小结
2020/01/29 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
Python列表解析操作实例总结
2020/02/26 Python
详解使用scrapy进行模拟登陆三种方式
2021/02/21 Python
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
2013/04/24 HTML / CSS
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
2015年八一建军节演讲稿
2015/03/19 职场文书
2015年母亲节寄语
2015/03/23 职场文书
SQL Server 中的事务介绍
2022/05/20 SQL Server