不知道第几次分享了


那些情况下,y!=x-(x-y)会成立
x,y是两个不相等的非空集合

python2与python3的区别
'''
# py2
>>> print("hello", "world")
('hello', 'world')
# py3
>>> print("hello", "world")
hello world

py2:input_raw()
py3:input()

1/2的结果
py2:返回0
py3:返回0.5

py2:默认编码ascii
py3:默认编码utf-8

字符串
py2:unicode类型表示字符串序列,str类型表示字节序列
py3::str类型表示字符串序列,byte类型表示字节序列

py2中函数用关键字global声明某个变量为全局变量,但是在嵌套函数中,想要给一个变量声明为非局部变量是没法实现的。
py3中,新增了关键字nonlocal,使得非局部变量成为可能
'''

python字符串驻留机制

对于短字符串,将其赋值给多个不同的对象时,内存中只有一个副本,多个对象共享该副本。长字符串不遵守驻留机制。
由数字,字符和下划线(_)组成的python标识符以及整数[-5,256]。

a = "hello"
b = "hello"
print(a is b)  # 输出 True 
print(a == b)  # 输出 True



a = "hello world"
b = "hello world"
print(a is b)  # 输出 False
print(a == b)  # 输出 True   a和b中都有空格


python中的驻留发生在compile_time(编译),而不是run_time(运行)。
a = 'ab' + 'c' is 'abc'
print(a)  # 输出 True
ab = 'ab'
b = ab + 'c' is 'abc'
print(b)  # 输出 False
第一个’ab’+‘c’是在compile-time(编译期)求值的,被替换成了’abc’,所以输出为True;第二个示例,ab+'c’是在run-time(运行期)拼接的,导致没有被自动intern


is 与 == 相比计算速度会更快,因为它不能重载,不用进行特殊的函数调用,通过直接比较两个整数 id,减少了函数调用的开销。


原文地址:https://www.cnblogs.com/zqfzqf/p/12102722.html