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

2019 年 5 月 12 日 AI100


本文转载自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 1in <module>
  File "<stdin>", line 2in 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”,了解票务以及会务详情。

推荐阅读

登录查看更多
1

相关内容

Python是一种面向对象的解释型计算机程序设计语言,在设计中注重代码的可读性,同时也是一种功能强大的通用型语言。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
288+阅读 · 2020年6月3日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
学员笔记||Python数据分析之:numpy入门(一)
七月在线实验室
7+阅读 · 2017年9月28日
利用python操作Excel教程
Python技术博文
4+阅读 · 2017年9月13日
python进行数据分析之数据聚合和分组运算
Python技术博文
3+阅读 · 2017年8月21日
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Learning Implicit Fields for Generative Shape Modeling
Arxiv
10+阅读 · 2018年12月6日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
194+阅读 · 2020年6月29日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【干货书】用于概率、统计和机器学习的Python,288页pdf
专知会员服务
288+阅读 · 2020年6月3日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
相关资讯
100行Python代码,轻松搞定神经网络
大数据文摘
4+阅读 · 2019年5月2日
[机器学习] 用KNN识别MNIST手写字符实战
机器学习和数学
4+阅读 · 2018年5月13日
教程 | 从头开始了解PyTorch的简单实现
机器之心
20+阅读 · 2018年4月11日
教你用Python来玩跳一跳
七月在线实验室
6+阅读 · 2018年1月2日
免费|机器学习算法Python实现
全球人工智能
5+阅读 · 2018年1月2日
学员笔记||Python数据分析之:numpy入门(一)
七月在线实验室
7+阅读 · 2017年9月28日
利用python操作Excel教程
Python技术博文
4+阅读 · 2017年9月13日
python进行数据分析之数据聚合和分组运算
Python技术博文
3+阅读 · 2017年8月21日
代码这样写不止于优雅(Python版)
数说工作室
4+阅读 · 2017年7月17日
Top
微信扫码咨询专知VIP会员