這樣的奇技淫巧,勸你不用也罷

今日推文說明

二條: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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息