1. 磐创AI首页
  2. 机器学习
  3. TensorFlowNews

Python带我飞:50个有趣而又鲜为人知的Python特性

点击上方“磐创AI”,选择“置顶公众号”

精品文章,第一时间送达

Python带我飞:50个有趣而又鲜为人知的Python特性

源:Github

编译:三石

转载自:新智元,未经允许不得二次转载


Python, 是一个设计优美的解释型高级语言, 它提供了很多能让程序员感到舒适的功能特性。但有的时候, Python 的一些输出结果对于初学者来说似乎并不是那么一目了然。


这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性, 并尝试讨论这些现象背后真正的原理!


虽然下面的有些例子并不一定会让你觉得 WTFs,但它们依然有可能会告诉你一些你所不知道的 Python 有趣特性。我觉得这是一种学习编程语言内部原理的好办法, 而且我相信你也会从中获得乐趣!


目录



  • Structure of the Examples/示例结构

  • Usage/用法

  • 👀 Examples/示例

    • += is faster/更快的 +=

    • > Let’s make a giant string!/来做个巨大的字符串吧!

    • > Explicit typecast of strings/字符串的显式类型转换

    • > Minor Ones/小知识点

    • > Okay Python, Can you make me fly?/Python, 可否带我飞? *

    • goto, but why?/goto, 但为什么? *

    • > Brace yourself!/做好思想准备 *

    • > Let’s meet Friendly Language Uncle For Life/让生活更友好 *

    • > Even Python understands that love is complicated/连Python也知道爱是难言的 *

    • > Yes, it exists!/是的, 它存在!

    • > Inpinity/无限 *

    • > Mangling time!修饰时间! *

    • > Modifying a dictionary while iterating over it/迭代字典时的修改

    • > Stubborn del operator/坚强的 del *

    • > Deleting a list item while iterating/迭代列表时删除元素

    • > Loop variables leaking out!/循环变量泄漏!

    • > Beware of default mutable arguments!/当心默认的可变参数!

    • > Catching the Exceptions/捕获异常

    • > Same operands, different story!/同人不同命!

    • > The out of scope variable/外部作用域变量

    • > Be careful with chained operations/小心链式操作

    • > Name resolution ignoring class scope/忽略类作用域的名称解析

    • > Needle in a Haystack/大海捞针

    • > Skipping lines?/跳过一行?

    • > Teleportation/空间移动 *

    • > Well, something is fishy…/嗯, 有些可疑…

    • > Strings can be tricky sometimes/微妙的字符串 *

    • > Time for some hash brownies!/是时候来点蛋糕了!

    • > Return return everywhere!/到处返回!

    • > Deep down, we’re all the same./本质上,我们都一样. *

    • > For what?/为什么?

    • > Evaluation time discrepancy/评估时间差异

    • is is not what it is!/出人意料的is!

    • > A tic-tac-toe where X wins in the first attempt!/一蹴即至!

    • > The sticky output function/麻烦的输出

    • is not ... is not is (not ...)/is not ... 不是 is (not ...)

    • > The surprising comma/意外的逗号

    • > Backslashes at the end of string/字符串末尾的反斜杠

    • > not knot!/别纠结!

    • > Half triple-quoted strings/三个引号

    • > Midnight time doesn’t exist?/不存在的午夜?

    • > What’s wrong with booleans?/布尔你咋了?

    • > Class attributes and instance attributes/类属性和实例属性

    • > yielding None/生成 None

    • > Mutating the immutable!/强人所难

    • > The disappearing variable from outer scope/消失的外部变量

    • > When True is actually False/真亦假

    • > From filled to None in one instruction…/从有到无…

    • > Subclass relationships/子类关系 *

    • > The mysterious key type conversion/神秘的键型转换 *

    • > Let’s see if you can guess this?/看看你能否猜到这一点?

    • Section: Strain your brain!/大脑运动!

    • Section: Appearances are deceptive!/外表是靠不住的!

    • Section: Watch out for the landmines!/小心地雷!

    • Section: The Hidden treasures!/隐藏的宝藏!

    • Section: Miscellaneous/杂项

  • Contributing/贡献

  • Acknowledgements/致谢

  • License/许可

    • Help/帮助

    • Want to surprise your geeky pythonist friends?/想给你的极客朋友一个惊喜?

    • Need a pdf version?/需要来一份pdf版的?

    • Follow Commit/追踪Commit


示例结构


所有示例的结构都如下所示:


> 一个精选的标题 *


标题末尾的星号表示该示例在第一版中不存在,是最近添加的。

# 准备代码.
# 释放魔法...



Output (Python version):

>>> 触发语句
出乎意料的输出结果


(可选): 对意外输出结果的简短描述。


说明

简要说明发生了什么以及为什么会发生。

如有必要, 举例说明


Output:

>>> 触发语句 # 一些让魔法变得容易理解的例子
# 一些正常的输入


注意: 所有的示例都在 Python 3.5.2 版本的交互解释器上测试过, 如果不特别说明应该适用于所有 Python 版本。


小标题:Usage/用法


我个人建议, 最好依次阅读下面的示例, 并对每个示例: