经常逛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
复制代码

到底返回哪个值

def some_func():
try:
return 'from_try'
finally:
return 'from_finally'
复制代码

输出

>>> some_func()
'from_finally'
复制代码

诸如此类的例子一共有50多个

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

微信搜索“Python之禅”更多好内容

最新文章

  1. [LeetCode] Wiggle Sort 摆动排序
  2. 初试TinyIoCContainer笔记
  3. asp.net mvc处理css和js版本问题
  4. 智能配置item
  5. ScrollView 简单出错
  6. Android App组件之ListFragment -- 说明和示例
  7. OC:内存管理、dealloc方法、copy知识点
  8. iOS8中的UIAlertController
  9. 监听tableview的点击事件
  10. Scala编程入门---面向对象编程之Trait高级知识
  11. wordpress上下篇
  12. vue-13-swiper组件的使用
  13. 【手记】sql报“聚合或其他set操作消除了null值”处理
  14. 8 个基于 Lucene 的开源搜索引擎推荐
  15. 关于防止表单form重复提交的方式
  16. 基于angularJS的表单验证练习
  17. 【并行计算】基于OpenMP的并行编程
  18. JQuery easyUi datagrid 中 editor 动态设置最大值最小值
  19. ES6/ES2015常用知识点和概念
  20. Grunt中批量无损压缩图片插件--Grunt-contrib-imagemin

热门文章

  1. [SD心灵鸡汤]003.每月一则 - 2015.07
  2. 练习使用shell在阿里云安装MySQL
  3. Java实现 LeetCode 476 数字的补数
  4. Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
  5. Java实现斐波那契数列的多种方法
  6. java实现欧拉与鸡蛋
  7. java实现第五届蓝桥杯大衍数列
  8. springboot集成mybatis(逆向工程),热部署以及整合Swagger2
  9. Tomcat 配置必备的 10 个小技巧
  10. thinkphp5升级thinkphp6完整步骤