社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

Python之禅 • 6 年前 • 490 次点击  

经常逛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多个,


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


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


推荐:
  1. 完结了!

  2. Python最冷门的模块

  3. python中最高频的模块


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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/70502