(给Python开发者加星标,提升Python技能)
英文:Satwik Kansal,翻译:暮晨
Python开发者
整理自 GitHub
【导读】:Python 是一个设计优美的解释型高级语言,它提供了很多能让程序员感到舒适的功能特性。但有的时候 Python 的一些输出结果对于初学者来说似乎并不是那么一目了然。
GitHub 有个仓库收集 Python 中那些难以理解和鲜为人知的功能特性,并尝试讨论这些现象背后真正的原理!
虽然有些例子并不一定会让你觉得“卧槽”(WTF),但它们依然有可能会告诉你一些你所不知道的 Python 有趣特性。我觉得这是一种学习编程语言内部原理的好办法,而且我相信你也会从中获得乐趣!
如果你是一位经验比较丰富的 Python 程序员,你可以尝试挑战看是否能一次就找到例子的正确答案。你可能对其中的一些例子已经比较熟悉了,那这也许能唤起你当年踩这些坑时的甜蜜回忆。
示例程序基于Python3.5.2。
is not ...
不是 is (not ...)
>>> 'something' is not None
True
>>> 'something' is (not None)
False
说明:
is not
是个单独的二元运算符, 与分别使用is
和not
不同.- 如果操作符两侧的变量指向同一个对象, 则
is not
的结果为False
, 否则结果为True
.
意外的逗号
Output:
>>> def f(x, y,):
... print(x, y)
...
>>> def g(x=4, y=5,):
... print(x, y)
...
>>> def h(x, **kwargs,):
File "", line 1
def h(x, **kwargs,):
^
SyntaxError: invalid syntax
>>> def h(*args,):
File "", line 1
def h(*args,):
^
SyntaxError: invalid syntax
说明:
- 在Python函数的形式参数列表中, 尾随逗号并不一定是合法的.
- 在Python中, 参数列表部分用前置逗号定义, 部分用尾随逗号定义. 这种冲突导致逗号被夹在中间, 没有规则定义它.(译:这一句看得我也很懵逼,只能强翻了.详细解释看下面的讨论帖会一目了然.)
- 注意: 尾随逗号的问题已经在Python 3.6中被修复[1]了. 而这篇帖子[2]中则简要讨论了Python中尾随逗号的不同用法.
参考资料
[1]https://bugs.python.org/issue9232
[2]https://bugs.python.org/issue9232#msg248399
- EOF -
推荐阅读 点击标题可跳转1、从踩坑学Python内部原理(6):出人意料的 is !
2、从踩坑学Python内部原理(5):执行时机的差异
3、从踩坑学Python内部原理(4):for 循环怎么会事儿?
觉得本文对你有帮助?请分享给更多人
推荐关注「Python开发者」,提升Python技能
点赞和在看就是最大的支持❤️