循环中间有逗号_从踩坑学Python内部原理(8):is not 与逗号

本文介绍了Python编程中一些容易让人困惑的特性,如`isnot`运算符、函数参数列表中的逗号使用,以及它们在Python不同版本中的表现。通过这些例子,读者可以更深入地了解Python的内部工作原理,同时对于有经验的程序员也是一个回顾和学习的机会。文章还提到了Python 3.6中对尾随逗号问题的修正,并提供了相关讨论和资源链接,供进一步研究。
摘要由CSDN通过智能技术生成

(给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 是个单独的二元运算符, 与分别使用 isnot 不同.
  • 如果操作符两侧的变量指向同一个对象, 则 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技能

b7bc6edae87add1d966598cd1318347d.png

点赞和在看就是最大的支持❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值