Python中What the f*ck Python ! 是什么意思?

看到一个有趣的 Python 项目, 专门介绍 python 里那些奇奇怪怪的语言坑。

觉得很有意思,正好最近在学英语,就翻译了一份中文版.

欢迎大家支持,纠错!顺便来波 star :-)


Python中What the f*ck Python ! 是什么意思?

29 回复

亦可赛艇


这是Python社区里一个梗,指那些看起来违反直觉但实际上完全符合语言规范的代码行为。

比如这个经典例子:

>>> a = 256
>>> b = 256
>>> a is b
True
>>> a = 257
>>> b = 257
>>> a is b
False

看起来同样的赋值操作,256时is返回True,257就返回False。这其实是因为Python对小整数(-5到256)做了缓存优化,is比较的是对象id,257会创建新对象。

再比如这个:

>>> 'something' is not None
True
>>> 'something' is (not None)
False

第一个比较字符串是否不是None,第二个其实是'something' is False,因为not None的结果是False。

这些“WTF”时刻通常源于对Python底层机制(如对象模型、运算符优先级、缓存机制)的不熟悉。社区有人专门收集这些案例做成趣味项目,帮助大家更深入理解语言设计。

一句话:这些都是合法的Python行为,只是有点反直觉。

感觉写一版 javascript 的能长一倍 哈哈

标题配合楼主头像食用味道更佳

事实上这个项目的原作者就是受到类似的 js 项目的启发才做了这个项目,文章最后有写

很有趣,感谢楼主翻译,已 star。

已 star,感谢楼主

看了前几个例子,java 不是也一样嘛,猜猜下面输出什么?

Integer c=2;
Integer d=2;
Integer u=1000;
Integer i=1000;
int o=1000;
System.out.println(c==d);
System.out.println(u==i);
System.out.println(o==i);
System.out.println(o==u);

拜托别让出面试题的人看到这些

666666 看了几个例子 就觉的很不一般

有点意思

不想回答,反正就是 integerCache 相关的

我觉得上边 java 这几个知识点还是有必要掌握的

小整数缓存我一个不是主写 Java 的都知道

有意思 star 了

这些坑只要理解名字空间,就能看懂一大半。至于 return finally return 这种。估计没人这样用

感觉这个作者相当爱 python…

没看到链接啊

感谢楼主分享这个有意思的项目,翻译有心了

竟然是另起炉灶,而不是从原项目 fork 出来而新增加一个中文版 .md 来自己维护…

这个真是棒极了!比前几天吵的火热的那个 “将代码翻译成中文” 的项目 有意义得多啊…

真有爱啊,可惜我已经离开了

廖良开

我没有说你不知道啊?本来就是常识啊,我只是问是不是应该写一篇 what the f**ck java ?

😂😂😂


我觉得这篇文章的意义就在于让你知道有这样的写法,但平时最好别用


另起炉灶的初衷时希望 commit 记录能保持纯净,因为我是每个列子提一个 commit,这样当你觉得我的翻译看不懂的时候翻一下 commit 记录就能很容易的获取原文与翻译对照的页面,而不用你在两个页面里来回找了。

“中文版” 那三个字就是链接,直接点就可以了。

#2 IE6 7 8 9

回到顶部