GitHub 标星 20K+:What the fuck Python?!

python之禅

共 1290字,需浏览 3分钟

 ·

2020-06-18 23:24

经常逛GitHub的可能关注一个牛叉的项目,叫 What the f*ck Python!

这个项目列出了几乎所有python中那些鲜为人知的功能特性,有些功能第一次遇见时,你会冒出 what the f**k 的感叹。

因为这些例子看起来反人类直觉。

但是如果你理解了它背后的真正原理,你又会惊叹what the f**k, 竟然还有这么骚的操作。

来看看几个例子吧。

微妙的字符串

>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True

>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False

>>> a, b = "wtf!", "wtf!"
>>> a is b
True # 3.7 版本返回结果为 False.

出乎意料的”is”

>>> a = 256
>>> b = 256
>>> a is b
True

>>> a = 257
>>> b = 257
>>> a is b
False

>>> a = 257; b = 257
>>> a is b
True

说好的元组不可变呢

some_tuple = ("A", "tuple", "with", "values")
another_tuple = ([1, 2], [3, 4], [5, 6])

>>> some_tuple[2] = "change this"
TypeError: 'tuple' object does not support item assignment
>>> another_tuple[2].append(1000) # 这里不出现错误
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000])
>>> another_tuple[2] += [99, 999]
TypeError: 'tuple' object does not support item assignment
>>> another_tuple
([1, 2], [3, 4], [5, 6, 1000, 99, 999])

消失的全局变量

e = 7
try:
raise Exception()
except Exception as e:
pass

输出

>>> print(e)
NameError: name 'e' is not defined

try 遇到 finally到底返回哪个值

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

输出

>>> some_func()
'from_finally'

诸如此类的例子一共有50多个,

3869b21a30a1b70014647ce926770163.webp


如果你能把这50多个特性背后的原理机制全部了解清楚,我相信你的python功力一定会上升一个层次。


传送门: https://github.com/leisurelicht/wtfpython-cn


推荐:
  1. 完结了!

  2. Python最冷门的模块

  3. python中最高频的模块


关注我,每天分享实用小知识

浏览 9
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报