Python哪些不为人知的天坑

发布时间2020-09-10    点击数: 98   作者:365体育平台首页

a="some_string"id(a)140420665652016id("some"+"_"+"string")#注意两个的id值是相同的

140420665652016

'a'*20is'aaaaaaaaaaaaaaaaaaaa'True'a'*21is'aaaaaaaaaaaaaaaaaaaaa'False#3

7版本返回结果为True

·当在同一行将a和b的值设置为"wtf!"的时候,Python注释

器会创建一个新对象,然后同时引用第二个变量(译:仅适用于3
7以下)
如果你在不同的行上进行赋值操作,它就不会“知道”已经有一个wtf!对象(因为"wtf!"不是按照上面提到的方式被隐式驻留的)
它是一种编译器优化,特别适用于交互式情况


·常量折叠(constantfolding)是Python中的一种窥孔优化(peepholeoptimization)技术

这意味着在编译时表达式'a'*20会被替换为'aaaaaaaaaaaaaaaaaaaa'以削减
运行时的时钟周期
只有长度小于20的字符串才会发生常量折叠

WTF()==WTF()#两个不同的对象应该不相等FalseWTF()isWTF()#也不相同Falsehash(WTF())==hash(WTF())#哈希值也应该不同Trueid(WTF())==id(WTF())True

print('wtfpython''')wtfpythonprint("wtfpython""")wtfpython#下面的语句会抛出`SyntaxError`异常#print('''wtfpython')#print("""wtfpython")

print("wtf""python")wtfpythonprint("wtf""")#or"wtf"""wtf

·'''和"""在Python中也是字符串定界符,Python注释

器在先碰到
三个引号的的时候会尝试再寻找三个终止引号作为定界符,如果不存在则会导致SyntaxError异常

·最初,Python并没有bool型(人们用0表示假值,用非零值比如1作为真值)

厥后
他们添加了True,False,和bool型,但是,为了向后兼容,他们没法把True和False设置为常量,只是设置成了内置变量

ord('е')#西里尔语的'e'(Ye)1077ord('e')#拉丁语的'e',用于英文并使用标准键盘输入101'е'=='e'False


Copyright 2003 - 2002 365体育平台首页. All Rights Reserved 版权所有粤ICP11235728 地址:BENZCLOUD奔馳雲端 優質平價雲端服務