python高手才知道的答案

记录一些python不为人知的有趣的用法或者知识点
 
1. 
>>> a = "some_string"
>>> id(a)
140420665652016
>>> id("some" + "_" + "string") # 注意两个的id值是相同的.
140420665652016

 2.
e = "wtf"
f = "wtf"
e is f
结果 True
 
e = "wtf?"
f = "wtf?"
e is f
结果 False

3.
some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JavaScript"
some_dict[5] = "Python"
 
>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0]
"Python"
>>> some_dict[5]
"Python"

Python 字典通过检查键值是否相等和比较哈希值来确定两个键是否相同.
具有相同值的不可变对象在Python中始终具有相同的哈希值.
 
4. 到处返回
def some_func():
try:
return 'from_try'
finally:
return 'from_finally'
 
>>> some_func()
'from_finally'

当在 "try...finally" 语句的 try 中执行 return, break 或 continue 后, finally 子句依然会执行.
函数的返回值由最后执行的 return 语句决定. 由于 finally 子句一定会执行, 所以 finally 子句中的 return 将始终是最后执行的语句.
 
5
for i in range(4):
print(i)
i = 10
你可曾觉得这个循环只会运行一次?

0 1 2 3
由于循环在Python中工作方式, 赋值语句 i = 10 并不会影响迭代循环, 在每次迭代开始之前, 迭代器(这里指 range(4)) 生成的下一个元素就被解包并赋值给目标列表的变量(这里指 i)了.

0 个评论

要回复文章请先登录注册