<返回更多

3 个不可思议的 Python 返回值

2020-01-24    
加入收藏
3 个不可思议的 Python 返回值

https://github.com/leisurelicht/wtfPython-cn

第一个:神奇的字典键

some_dict = {}
some_dict[5.5] = "Ruby"
some_dict[5.0] = "JAVAScript"
some_dict[5] = "Python"

Output:

>>> some_dict[5.5]
"Ruby"
>>> some_dict[5.0]
"Python"
>>> some_dict[5]
"Python"

"Python" 消除了 "JavaScript" 的存在?

 

说明:

注意: 具有不同值的对象也可能具有相同的哈希值(哈希冲突).

>>> 5 == 5.0
True
>>> hash(5) == hash(5.0)
True

第二个:异常处理中的return

def some_func:
try:
return 'from_try'
finally:
return 'from_finally'

Output:

>>> some_func
'from_finally'

说明:

第三个:相同对象的判断

class WTF:
pass

Output:

>>> WTF == WTF # 两个不同的对象应该不相等
False
>>> WTF is WTF # 也不相同
False
>>> hash(WTF) == hash(WTF) # 哈希值也应该不同
True
>>> id(WTF) == id(WTF)
True

 

说明:

class WTF(object):
def __init__(self): print("I")
def __del__(self): print("D")

Output:

>>> WTF is WTF
I
I
D
D
False
>>> id(WTF) == id(WTF)
I
D
I
D
True

正如你所看到的, 对象销毁的顺序是造成所有不同之处的原因.

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>