那些情况下,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,减少了函数调用的开销。