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

news/2024/7/7 22:17:41

640?wx_fmt=png


本文转载自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

就会自动打开一个网页。

640?wx_fmt=png


局部/全局变量分不清

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

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”,了解票务以及会务详情。

640?wx_fmt=jpeg

推荐阅读

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

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

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

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

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

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

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

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

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

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

640?wx_fmt=png


http://lihuaxi.xjx100.cn/news/283563.html

相关文章

活久见!技术面试官竟然给我出了一个脑筋急转弯,还问我王者荣耀什么段位?...

作者 l Hollis来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09;我叫小志&#xff0c;是一个毕业3年的Java后端开发&#xff0c;在一家传统银行的研发中心负责主要的研发岗位。虽然这份工作并不是很忙&#xff0c;给我的薪水也算不错&#xff0c;但是用到的技术…

fmod实现声音波形_“老张说数理化”—中考物理专题02-声音与环境(收藏可打印)...

前几天老张已经把整个初中阶段的数理化基础知识按照章节归纳总结了一遍&#xff0c;发在头条上&#xff0c;需要的朋友们可以关注私信老张&#xff0c;在往期文章里面找&#xff0c;老张闲暇之余定发给您。 今天开始我将会每天分别更新数理化第一轮复习的相关知识点易错点常考点…

【JavaEE】Spring 事务传播机制

目录✅1. 事务传播机制定义1.1 事务传播机制与事务隔离级别区别2. 7大事务的传播机制3. Spring 事务传播机制使用和各种场景演示3.1 支持当前事务&#xff08;REQUIRED&#xff09;3.2 NESTED 嵌套事务3.3 不支持当前事务&#xff08;REQUIRES_NEW&#xff09;3.4 不支持当前事…

dedeCMS修改文章更新发布时间问题

今天在dedeCMS系统中&#xff0c;修改或文章时发现&#xff0c;只要提交以后&#xff0c;文章发布时间便是当前时间。但有时候修改文章以后并不想把文章发布时间也更新成修改时间。我希望的是&#xff0c;修改文章不对时间做更改保持文章原有发布时间&#xff0c;只有修改时间才…

Castle ActiveRecord(一)概述

一、ActiveRecord与Castle ActiveRecordActiveRecord是《Patterns of Enterprise Application Architecture》中描述的著名模式。基本上&#xff0c;当实例每一行的时候&#xff0c;所有的静态方法会作用于全部纪录。 Castle ActiveRecord 是ActiveRecord 模式的一个实现&am…

Python如何优化列表接口进行分页

最近&#xff0c;在做测试开发平台的时候&#xff0c;需要对测试用例的列表进行后端分页&#xff0c;在实际去写代码和测试的过程中&#xff0c;发现这里面还是有些细节的&#xff0c;故想复盘一下分页的目的 做个假设&#xff0c;加入用例库有 1W 条数据&#xff0c;如果想要…

Bert时代的创新:Bert应用模式比较及其它 | 技术头条

作者&#xff1a;张俊林&#xff0c;中国中文信息学会理事&#xff0c;中科院软件所博士。目前在新浪微博 AI Lab 担任资深算法专家。在此之前&#xff0c;张俊林曾经在阿里巴巴任资深技术专家并负责新技术团队&#xff0c;以及在百度和用友担任技术经理及技术总监等职务。他是…

matlab 编arm_Matlab将实现STM32的代码生成、调试及建模功能

ARM、意法半导体(ST)与MATHWORKS携手实现支持STM32微控制器的代码生成、调试及建模功能引用来自&#xff1a;http://www.chinaaet.com/article/index.aspx?id210954ARM与横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics&#xff0c;简称ST&#x…