详解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 web程序
Sep 11 Python
Python中正则表达式的详细教程
Apr 30 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
对numpy中布尔型数组的处理方法详解
Apr 17 Python
Python中几种属性访问的区别与用法详解
Oct 10 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Django URL参数Template反向解析
Nov 24 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 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与MySQL交互使用详解
2006/10/09 PHP
PHP cron中的批处理
2008/09/16 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
php控制文件下载速度的方法
2015/03/24 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
基于jQuery实现搜索关键字自动匹配功能
2020/03/26 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
JavaScript实现开关等效果
2017/09/08 Javascript
webpack3之loader全解析
2017/10/26 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
2018/08/20 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
Sanic框架路由用法实例分析
2018/07/16 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
《哪吒闹海》教学反思
2014/02/28 职场文书
干部下基层实施方案
2014/03/14 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
撤诉申请怎么写
2015/05/19 职场文书
最美乡村教师观后感
2015/06/11 职场文书
2016年教师节感言
2015/12/09 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
javascript Number 与 Math对象的介绍
2021/11/17 Javascript