详解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的Flask框架下收发电子邮件的教程
Apr 21 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
在Python中操作字典之setdefault()方法的使用
May 21 Python
Python中的ctime()方法使用教程
May 22 Python
Django 添加静态文件的两种实现方法(必看篇)
Jul 14 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
微信跳一跳小游戏python脚本
Jan 05 Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 Python
python安装scipy的步骤解析
Sep 28 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
PHP number_format() 函数定义和用法
2012/06/01 PHP
php数字游戏 计算24算法
2012/06/10 PHP
php从csv文件读取数据并输出到网页的方法
2015/03/14 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
jquery中ajax学习笔记3
2011/10/16 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
checkbox批量选中,获取选中项的值的简单实例
2016/06/28 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
Python处理XML格式数据的方法详解
2017/03/21 Python
Python编程之string相关操作实例详解
2017/07/22 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
用Python配平化学方程式的方法
2019/07/20 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
采购部主管岗位职责
2014/01/01 职场文书
二年级体育教学反思
2014/01/15 职场文书
《草原》教学反思
2014/02/15 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
企业员工集体活动方案
2014/08/17 职场文书
总账会计岗位职责
2015/04/02 职场文书
毕业感言怎么写
2015/07/31 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
python Polars库的使用简介
2021/04/21 Python
JavaScript控制台的更多功能
2021/04/28 Javascript
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
CentOS安装Nginx并部署vue
2022/04/12 Servers