<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
好的變數和註釋並非為計算機而寫,而是為每個閱讀程式碼的人而寫。變數與註釋是表達作者思想的基礎,他們對程式碼質量的貢獻母庸質疑。
1.什麼是變數解包
把一個可迭代物件的所有成員,一次性的賦值給多個變數的過程就是變數解包。
2.變數解包語法
# 變數解包 username = ['zhangsan', '18'] name, age = username print('name:{}, age:{} '.format(name, age)) # 巢狀型別變數解包 username = [1, ['zhangsan', 18]] number, (name, age) = username print('number:{}, name:{}, age:{}'.format(number, name, age)) # 匹配模式解包 data = ['zhangsan', 'banana', 'apple', 'orange', 18] name, *fruits, score = data print('name:{}, fruits:{}, score:{}'.format(name, fruits, score)) # 切片解包 data = ['zhangsan', 'banana', 'apple', 'orange', 18] name, fruits, score = data[0], data[1:-1], data[-1] print('name:{}, fruits:{}, score:{}'.format(name, fruits, score)) # 變數解包用到for迴圈 for name, age in [('zhangsan', 15), ('lisi', 18)]: print('name:{}, age:{}'.format(name, age)) # 單下劃線變數名 username = ['zhangsan', 19] name, _ = username print(name, _)
1.變數註明型別介紹
python給變數註明型別,與java變數型別不同,python的變數型別只是一種提示功能,不提供任何校驗功能。
因此傳入的變數型別與校驗型別不一致也不會報錯。
變數註明型別語法非常簡單,在變數名稱後面用冒號分隔表名型別即可。
2.變數註明型別範例
# list表示引數為列表型別,int表示裡面的成員是整形 def remove_invalid(item: list[int]): print(item) # 傳入符合變數型別引數 remove_invalid([1, 2, 3]) # 傳入不符合變數型別引數,不影響函數執行結果。 remove_invalid(1) # 型別註解使用demo class Duck: def __init__(self, color:str): self.color = color # 為quack方法註明返回值型別為None def quack(self) -> None: print(f"Hi, I'm a {self.color} duck") # -> List[Duck]:用typing模組的List物件為函數返回值標註具體型別 def create_random_ducks(number:int) -> List[Duck]: # 為變數加上型別宣告 ducks: List[Duck] = [] for _ in number: color = random.choice(['yellow', 'white', 'gray']) ducks.append(Duck(color=color)) return ducks ducks = create_random_ducks((1,2,3)) for duck in ducks: duck.quack()
給變數起名主要有兩種流派:一是通過大小寫界定單詞的駝峰命名,例如Java語言。二是通過下劃線連線的蛇形命名,例如python語言。
1.遵循PEP8原則
PEP8原名《Python Enhacement Proposal #8》譯為《8 號 Python 增強規範》為程式碼編寫風格提供了指南,變數命名部分規範如下。
2.描述性要強
寫作過程中一項重要的工作就是為句子斟酌恰當的詞語,不同的詞語描述性的強弱是不同的。比如”冬天傲骨的梅花“ 就比 ”花“ 描述性要強。為變數命名和詞語一樣,同樣有描述性強弱之分。
下面是描述性強弱不同的變數,對比可以感受到描述性強的變數名稱使程式碼更易讀。
# 描述性弱的變數名稱:看不出它在描述什麼 vlaue = process(s.strip()) # 描述性強的變數名稱:從使用者輸入引數中解析出使用者名稱稱,並剔除引數中的空格。 username = extract_username(input_string.strip())
3.長度儘量短
假如一個特別長的重複出現,讀者不會覺得它精確,反而是囉嗦難讀。在保證描述性清晰前提下,儘量讓名字簡短易讀,通常控制在4個單詞內。
4.變數註明型別
雖然python的變數不需要宣告型別,但是為了提升可讀性,我們可以為變數註明型別。
除了為變數註明型別外,還有約定俗稱的變數名稱與型別建立匹配關係,下面是一些變數名稱和型別匹配的例子。
變數名 | 含義 | 說明 |
---|---|---|
is_superuser | 是否是超級使用者 | is 表示是或不是 |
has_errors | 有沒有錯 | hans 表示有或沒有 |
allow_empty | 是否允許空值 | allow表示是否允許 |
5.超短命令
在變數命名中有一類名稱比較特別,只有一兩個字母,通常他們分為兩類,一類是大家約定俗稱的短名字,另一類是起別名。
約定俗稱常用名稱
長名稱起別名
is_not_normal as l
註釋不會影響程式碼的行為,它會影響程式碼的可讀性。
python的註釋分為兩種,一種是程式碼內註釋,一種是函數、類的註釋也稱為介面註釋。
行內註釋
# 使用strip()去掉空格的好處: # 1.資料庫儲存資料時佔用空間更小 # 2.不必因為使用者多打了空格而要求使用者重新輸入。 username = extract_username(input_string.strip())
介面註釋
class Person: # 使用三個單引號或三個雙引號就是介面註釋。 '''人 :param name: 姓名 : param age: 年齡 : param favrite_color: 最喜歡的顏色 ''' def __init__(self, name, age, favrite_color): self.name = name self.age = age self.favrite_color = color
1.用註釋遮蔽程式碼
在程式設計中會用註釋遮蔽程式碼,如果這些程式碼不需要了可以直接刪掉,如果需要用到這些程式碼可以從Git倉庫中找到。臨時註釋掉的大段程式碼,對於閱讀程式碼的人來說是一種干擾,沒有任何意義。
2.用註釋複述程式碼
# 呼叫strip()去掉空格 input_string = input_string.strip()
上面這樣的註釋完全是冗餘的,因為讀者從程式碼本身就能讀到註釋裡的資訊。好的註釋應該是這樣
# 如果將帶有空格的引數傳遞到後端處理,可能會造成服務奔潰 # 因此使用strip()去掉收尾空格 input_string = input_string.strip()
註釋作為程式碼之外的說明性文字,應該儘量提供那些讀者無法從程式碼裡讀出的資訊,描述程式碼為什麼要這麼做,而不是簡單複述程式碼本身。
除了為什麼的解釋性註釋外,還有一種註釋也很常見:指引性註釋
這種註釋不復述程式碼,而是簡明扼要概括程式碼功能,起到”程式碼導讀“作用。
指引性註釋並不提供程式碼裡讀不到東西——假如沒有註釋,耐心讀完所有程式碼也能知道程式碼做了什麼。指引性註釋就是降低程式碼認知的成本,讓我們更容易理解程式碼的意圖。
指引性註釋範例
# 初始化存取服務的client物件 token = token_service.get_token() service_client = ServiceClient(token = token) service_client.ready()
3.弄錯介面註釋的受眾
到此這篇關於Python變數與註釋高階用法的文章就介紹到這了,更多相關Python變數與註釋內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45