官方python3.x所做的一些更改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了官方python3.x所做的一些更改相关的知识,希望对你有一定的参考价值。
在python3.x中,raw_input已经删除掉,只能使用input
print "hello world!" 已经不能这样编写,如果在3.x中这样使用print,将导致错误返回。在3.x中使用的规范是这样。 print(...),要加上括号。
在python 3.x中,已经删除cmp内建函数。如果在3.x中想表示类似的代码cmp(a,b)。只能这样写(a>b)-(a<b)替代。
或是导入模块operator来代替cmp。
以下是自己在网上进行搜索查询,找到的关于在3.x中替代cmp的一些参考,资料来源:http://blog.csdn.net/zhuhai__yizhi/article/details/77644915
在没有导入模块情况下,会出现下面的情况:
提示找不到cmp函数了,那么在python3中该如何使用这个函数呢?
所以要导入模块operator。
看python的帮助文档,在oprater这个模块中有了这么几个函数:
operator.lt(a, b)
operator.le(a, b)
operator.eq(a, b)
operator.ne(a, b)
operator.ge(a, b)
operator.gt(a, b)
operator.__lt__(a, b)
operator.__le__(a, b)
operator.__eq__(a, b)
operator.__ne__(a, b)
operator.__ge__(a, b)
operator.__gt__(a, b)
这几个函数就是用来替换之前的cmp的,之前使用cmp的同胞们,咱们以后就换上面这些函数咯。
先简单说下这几个函数的意思吧。
lt(a, b) 相当于 a < b
le(a,b) 相当于 a <= b
eq(a,b) 相当于 a == b
ne(a,b) 相当于 a != b
gt(a,b) 相当于 a > b
ge(a, b)相当于 a>= b
函数的返回值不是布尔哦。这点需要注意,还是跟cmp一样返回的是数值哦。
我使用的是python3.6.2版本,在cmd中的python交互模式下进行如下代码测试。
import operator
str1="a"
str2="b"
print(operator.eq(str1,str2))
输出结果为:
False
发现输出的还是布尔值。
以上是关于官方python3.x所做的一些更改的主要内容,如果未能解决你的问题,请参考以下文章