这样的奇技淫巧,劝你不用也罢

今日推文说明

二条:Python 为何用 # 号做注释符?web

三条:你花了两天时间,就给老子写了两行代码?!微信

四条:一个Scrapy项目下的多个爬虫如何同时运行?app

↑ 关注 + 星标 ,后台回复【大礼包】送你Python自学大礼编辑器

交流群,速进!
函数

假设我如今使用print大法打印了一段日志:
工具

print('我是日志')

我想把这段日志注释掉,你们会怎么作呢?相信大多数人都是在行首加上一个#号:flex

# print('我是日志')

有些人可能也会用多行注释:网站

"""
print('我是日志')
"""

但有些人,恰恰喜欢另辟蹊径标新立异,非要跟你们不同,他们是这样写的:ui

print:('我是日志')

print和左括号之间,加了一个冒号。从效果上看,确实也起到了注释的做用:url

[image:029695FF-7538-4215-8977-31A43EE9B51C-383-0000504BC19305F0/047B50A4-F251-42F3-B1D2-16EA50CD86E3.png]

为何这样写也能实现注释的效果呢?这就要从 Python 的类型标注提及。

Python做为一个动态语言,其自己对变量类型是没有强制要求的,同一个变量,咱们既可让它是int,也可让它是字符串:

a = 1
a = 'x'

但项目规模大起来之后,这种特性可能会带来不少难以察觉的隐患。所以,Python引入了一个新的功能,叫作类型标注。在定义变量、函数接收参数的时候,咱们能够指定它们的类型,若是赋值或者传递参数的时候类型不匹配,IDE会给你加上深色背景,提醒你这里有问题,以下图所示:

但类型标注这个功能是给IDE或者静态检查工具使用的,Python解释器在解释代码的时候,会自动忽略它。因此即便你强行不遵照也没有关系,以下图所示:

.

有些人正是看中了Python解释器自动忽略类型标注这个特色,动起了歪脑筋,干起了奇技淫巧的勾当。

由于类型标注中,冒号后面的类型,除了咱们常见的类型外,还能够是咱们自定义的类,甚至是一个列表:

class People:
    def __init__(self, name, age):
        self.name = name
        self.age = age


kingname = People('kingname'28)
kingname_clone: People = kingname
kingname_god: [123] = kingname # 这里,强制标注 kingname_god 变量的类型为[1, 2, 3]。

同时,类型标注也能够不赋值,因此这样写也是能够的:

a: int

这样一来,显然下面这种写法也是能够的:

kingname_god: [123]

如今,咱们把列表改为元组,因而就变成了:

kingname_god: (123)

如今咱们把kingname_god改为print,因而咱们就获得了:

print: (1,23)

由于元组也能够只有一个元素,因此显然:

print:('我是日志')

这种写法也是合法的,它表示把 print变量标注为('我是日志')类型,但不赋值。

因为Python 解释器会自动忽略类型标注,因此对于这种没有赋值的类型,Python 会自动忽略整行,因此看起来就像是被注释了同样。

为了更好地证实print:('我是日志')本质上是一个没有赋值的类型标注,咱们来看一下字节码:

能够看到,这两种写法,咱们一行一行对比,他们的字节码流程彻底同样,差异仅仅在用的类型是int仍是'我是日志',以及变量名是a仍是print

除了print外,任何咱们自定义的函数甚至是字典、列表均可以这样写,例如:

但我真切但愿,任何一个脑壳正常的同窗都不要这样写。这种写法除了炫技之外没有任何做用。

        
    
       
       
       
        
        
                 
        
    
       
           
       
          
          
          
           
           
                    
           
       
          
推荐阅读

        
    
       
       
       
        
        
                 
        
    
       
                   
               
                  
                  
                  
                   
                   
                            
                   
               
                  
用这个网站一查,才知道本身被卖了
特朗普要求字节跳动放弃TikTok全部权,微软考虑收购,网友:明抢?
经过简历造假进了大公司以后......
肝了6个月,《Python黑魔法指南》全新版本 v2.0 上线发布

推荐个人微信号



来围观个人朋友圈,天天都有更新,坑位有限,速速扫码添加
备注:
开发方向_昵称_城市,另送你10本Python电子书,
更多须要可进交流群  猛戳》》交流群,速进!


        
    
       
       
       
        
        
                 
        
    
       
            
        
           
           
           
            
            
                     
            
        
           

            
        
           
           
           
            
            
                     
            
        
           

后台回复【大礼包】送你我整理的全套Python自学资料,不再用处处找资料了


本文分享自微信公众号 - Python绿色通道(Python_channel)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息