本文转载自Python编程时光(ID:Python-Time)

冷知识系列,已经更新至第六篇。

谈谈 Python 那些不为人知的冷知识(一)

谈谈 Python 那些不为人知的冷知识(二)

谈谈 Python 那些不为人知的冷知识(三)

谈谈 Python 那些不为人知的冷知识(四)

谈谈 Python 那些不为人知的冷知识(五)

链式比较

先给看一个示例。

>>> False == False == True
False

你知道这个表达式会返回 False 吗?

我再给你举个例子,你可能就懂了。

f 18 < age < 60:
    print("young man")

如果还不明白,再给你整个等价写法。

>>> False == False and False == True
False


奇怪的字母

直接看下列例子,在Python 2.x 中

>>> value = 11
>>> valuе = 32
  File "<stdin>", line 1
    valuе = 32
        ^
SyntaxError: invalid syntax

在Python 3.x 中

>>> value = 11
>>> valuе = 32
>>> value
11

我相信你一开始看到这里,一定是目瞪口呆。你可以在自己的电脑上尝试一下,你会发现你不管在哪个版本的 Python 里运行都没有问题。

如果你想重现我这个场景,你可能复制我上面的代码粘贴至自己的命令行中即可。

在这里,也不卖关子了,上面代码中第二行的 е 和 第一行的 e 是不一样的。(为了让你区分开来,上面的两个 e 的字体我选不一样的,当你在你的 cmd 窗口中执行时,是完全区分不出来的。)

第二行的 e 是 Cyrillic(西里尔)字母,而不是我们熟悉的英文字母。

>>> ord('е') # cyrillic 'e' (Ye)
1077
>>> ord('e') # latin 'e', as used in English and typed using standard keyboard
101
>>> 'е' == 'e'
False

细思恐极,平时可千万不要得罪同事们,万一辞职的时候,把你项目里的 e 全局替换成 e,到时候连错都不知道错哪了哈哈。

x == +x 吗

在大多数情况下,这个等式是成立的。

>>> n1 = 10086
>>> n2 = +n1
>>>
>>> n1 == n2
True

什么情况下,这个等式会不成立呢?由于Counter的机制,+ 用于两个 Counter 实例相加,而相加的结果如果元素的个数 <=0,就会被丢弃。

>>> from collections import Counter
>>> ct = Counter('abcdbcaa')
>>> ct
Counter({'a': 3, 'b': 2, 'c': 2, 'd': 1})
>>> ct['c'] = 0
>>> ct['d'] = -2
>>>
>>> ct
Counter({'a': 3, 'b': 2, 'c': 0, 'd': -2})
>>>
>>> +ct
Counter({'a': 3, 'b': 2})


有趣的import

import 是 Python 导包的方式。你知道 Python 中内置了一些很有(wu)趣(liao)的包吗?

Hello World

>>> import __hello__
Hello World!

Python之禅

>>> import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

反地心引力漫画

在 cmd 窗口中导入antigravity

>>> import antigravity

就会自动打开一个网页。



局部/全局变量分不清

在开始讲之前,你可以试着运行一下下面这小段代码。

a = 1

def func01():
    a += 1

func01()

看似没有毛病,但实则已经犯了一个很基础的问题,这个报错相当常见吧?

>>> func01()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in func01
UnboundLocalError: local variable 'a' referenced before assignment

当程序运行到 a += 1 时,Python 解释器就认为在函数内部要给 a 这个变量赋值,当然就把 a 当做局部变量了,报错是理所应当的。理解了上面的例子,给你留个思考题。为什么下面的代码不会报错呢?

a = 1

def func02():
    print(a)

func02()

(本文为 AI科技大本营转载文章,转载请联系原作者)

CTA核心技术及应用峰会

5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。

更多重磅嘉宾请识别海报二维码查看,目前会议早鸟票发售中(原票价1099元),点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。

推荐阅读

  • 人工智能的浪潮中,知识图谱何去何从?

  • 从Pixel 3a到Android Q,一份谷歌AI能力的“成绩单”|Google I/O全程回顾

  • Python datetime指南:教你如何处理日期和时间(附试题+答案)

  • 从小白到入门算法,我的经验分享给你~

  • 开了个会:破局企业云通信,华为加速 Buff 开发者!

  • 独家! 币安被盗原因找到了! 7074枚比特币竟是这样丢掉的

  • 保送清华成博士,华为 12 年搞通信,他为何如此看待 5G ?|人物志

  • 补偿100万?Oracle裁900+程序员,新方案已出!

  • 什么叫云原生应用?| 技术头条

  • @程序员,不加班就滚吧 | 程序员有话说

链式比较、奇怪的字母、有趣的import...Python冷知识(六)相关推荐

  1. 链表list(链式存储结构实现)_VOL.2 如何在python中实现链式存储结构

    一.前言 链式存储作为一种重要的数据存储方式有着极强的数据组织能力.灵活型和动态性,在众多数据结构中应用非常广泛.所谓链式存储结构,就是采用分散的存储空间分别存储每一组数据再通过地址链接的形式将全部数 ...

  2. Python 数据结构 之 线性表 的链式存储结构

    用Python 来实现 C语言中 线性表的链式存储结构. 文章转载请注明:  Python 数据结构 之 线性表 的链式存储结构 代码地址 https://github.com/WenkeZhou/P ...

  3. lombok链式编程

    lombok链式编程 lombok能通过注解的方式,在编译时自动为属性生成构造器,getter/setter.equals.hashcode.toString方法. 1.添加依赖 <depend ...

  4. Python 爬虫十六式 - 第七式:正则的艺术

    RE:用匹配来演绎编程的艺术 学习一时爽,一直学习一直爽   Hello,大家好,我是 Connor,一个个从无到有的技术小白.上一次我们说到了 pyquery 今天我们将迎来我们数据匹配部分的最后一 ...

  5. Python爬虫十六式 - 第三式:Requests的用法

    Requests: 让 HTTP 服务人类 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.今天我们继续来说我们的 Python 爬虫,上一次我们说到了 ...

  6. Python 爬虫十六式 - 第八式:实例解析-全书网

    实例解析- 全书网 学习一时爽,一直学习一直爽   Hello,大家好,我是Connor,一个从无到有的技术小白.前面我们就算是把所有的网页访问与网页解析的方法给大家讲完了.为了帮助大家更好的使用这些 ...

  7. 「镁客·请讲」HelloEOS梓岑:嘻哈外表下的区块链式达尔文主义

    这个世界的成功者需要具备的首要素质,是强烈的攻击性或侵略性. 四月的天气暖风和煦,脚下的昆山扬不起一丝浮尘.位于海创大厦17楼的YOYOW办公室,办公风格简单质朴到只看到桌椅的青木色调,偶然搭配上窗台 ...

  8. 哈夫曼树--链式结构(建立huffman树、编码、解码)

    引子: 用链式结构来建立哈夫曼树. 总体思路是: 将每一棵树(这是每一棵树只有一个节点,头节点)放在一个优先队列中(下面的是链表实现的优先队列),频率(rate)小的在队列头,取出队列头两个,频率相加 ...

  9. 大话PHP设计模式:类自动载入、PSR-0规范、链式操作、11种面向对象设计模式实现和使用、OOP的基本原则和自动加载配置...

    一.类自动载入 SPL函数 (standard php librarys) 类自动载入,尽管 __autoload() 函数也能自动加载类和接口,但更建议使用 spl_autoload_registe ...

最新文章

  1. Centos7-Mysql 5.6 多主一从 解决方案详细配置
  2. JavaSE基础复习总结
  3. sortable vue 排序_VUE +element el-table运用sortable 拖拽table排序,实现行排序,列排序...
  4. 如何用python批量处理图片大小_python批量修改图片大小的方法
  5. 图像无损、有损压缩方法调研
  6. go 的基本数据类型
  7. dev控件ASPxComboBox设置ReadOnly=true后
  8. imdisk虚拟光驱安装linux,使用imdisk虚拟光驱加载镜像文件操作方法
  9. 08cms cecore.cls.php,08CMS 变量覆盖导致getshell 等问题
  10. H5自适应简约浪漫婚礼邀请函HTML源码
  11. 真格量化常见报错信息和Debug方法
  12. YDOOK:Pytorch教程:tensor 张量内各个值同时相加一个数
  13. pandas计算方差,平均值,分位数,中位数
  14. opencv中cv2.warpAffine 和 cv2.warpPerspective的广泛应用
  15. 无法获取'https://jcenter.bintray.com/com/网站的资源
  16. google海底光缆图_Google 又规划了三条海底光缆,还嫌它的云服务速度不够快
  17. xyz文件怎么生成三维模型_知道xy z坐标怎么在matlab中生成三维图??
  18. 计算机应用领域的实践,计算机技术在通信技术领域的应用实践探微
  19. 自己动手写一个操作系统——loader(1)
  20. 国产LoRa技术?ZETA相比LoRa有哪些优势?

热门文章

  1. ReactiveCocoa入门-part2
  2. (转)eclipse 代码自动补全
  3. 支付宝接口使用文档说明 支付宝异步通知
  4. 性能优化之Java(Android)代码优化
  5. Docker Compose 1.18.0 之服务编排详解
  6. 计算机电磁兼容性设计方法,某型號加固计算机电磁兼容性设计.doc
  7. Java Day01-2
  8. ROS控制无人机offboard模式
  9. [POI2007]ZAP-Queries
  10. C. Edgy Trees Codeforces Round #548 (Div. 2) 【连通块】