變量命名
在《初識(shí)永遠(yuǎn)強(qiáng)大的函數(shù)》一文中,有一節(jié)專門討論“取名字的學(xué)問(wèn)”,就是有關(guān)變量名稱的問(wèn)題,本溫故而知新的原則,這里要復(fù)習(xí):
名稱格式:(下劃線或者字母)+(任意數(shù)目的字母,數(shù)字或下劃線)
注意:
?1.區(qū)分大小寫
?2.禁止使用保留字
?3.遵守通常習(xí)慣
??以單一下劃線開(kāi)頭的變量名(_X)不會(huì)被from module import *語(yǔ)句導(dǎo)入的。
??前后有下劃線的變量名(X)是系統(tǒng)定義的變量名,對(duì)解釋器有特殊意義。
??以兩個(gè)下劃線開(kāi)頭,但結(jié)尾沒(méi)有兩個(gè)下劃線的變量名(__X)是類本地(壓縮)變量。
??通過(guò)交互模式運(yùn)行時(shí),只有單個(gè)下劃線變量(_)會(huì)保存最后的表達(dá)式結(jié)果。
?
需要解釋一下保留字,就是python里面保留了一些單詞,這些單詞不能讓用戶來(lái)用作變量名稱。都有哪些呢?(python2和python3少有差別,但是總體差不多)
and assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while yield
需要都記住嗎?當(dāng)然不需要了。一方面,可以在網(wǎng)上隨手查到,另外,還能這樣:
? File "
??? not = 3
??????? ^
SyntaxError: invalid syntax
>>> pass = "hello,world"
? File "
pass = "hello,world"
???????? ^
SyntaxError: invalid syntax
?在交互模式的實(shí)驗(yàn)室中,用保留字做變量,就報(bào)錯(cuò)了。當(dāng)然,這時(shí)候就要換名字了。
以上原則,是基本原則。在實(shí)際編程中,大家通常還這樣做,以便讓程序更具有可讀性:
??名字具有一定的含義。比如寫:n = "qiwsir",就不如寫:name = "qiwsir"更好。
??名字不要誤導(dǎo)別人。比如用account_list指一組賬號(hào),就會(huì)被人誤解為是list類型的數(shù)據(jù),事實(shí)上可能是也可能不是。所以這時(shí)候最好換個(gè)名稱,比如直接用accounts。
??名字要有意義的區(qū)分,有時(shí)候你可能會(huì)用到a1,a2之類的名字,最好不要這么做,換個(gè)別的方式,通過(guò)字面能夠看出一定的區(qū)分來(lái)更好。
??最好是名稱能夠讀出來(lái),千萬(wàn)別自己造英文單詞,也別亂用所寫什么的,特別是貴國(guó)的,還喜歡用漢語(yǔ)拼音縮寫來(lái)做為名字,更麻煩了,還不如全拼呢。最好是用完整的單詞或者公認(rèn)的不會(huì)引起歧義的縮寫。
??單個(gè)字母和數(shù)字就少用了,不僅是顯得你太懶惰,還會(huì)因?yàn)樵谝欢未a中可能有很多個(gè)單個(gè)的字母和數(shù)字,為搜索帶來(lái)麻煩,別人也更不知道你的i和他理解的i是不是一個(gè)含義。
?
總之,取名字,講究不少。不論如何,要記住一個(gè)標(biāo)準(zhǔn):明確
賦值語(yǔ)句
對(duì)于賦值語(yǔ)句,看官已經(jīng)不陌生了。任何一個(gè)變量,在python中,只要想用它,就要首先賦值。
語(yǔ)句格式:變量名稱 = 對(duì)象
上一節(jié)中也分析了賦值的本質(zhì)。
還有一種賦值方式,叫做隱式賦值,通過(guò)import、from、del、class、for、函數(shù)參數(shù)。等模塊導(dǎo)入,函數(shù)和類的定義,for循環(huán)變量以及函數(shù)參數(shù)都是隱式賦值運(yùn)算。這方面的東西后面會(huì)徐徐道來(lái)。
>>> name = "qiwsir"
>>> name, website = "qiwsir","qiwsir.github.io"???? #多個(gè)變量,按照順序依次賦值
>>> name
'qiwsir'
>>> website
'qiwsir.github.io'
>>> name, website = "qiwsir"??? #有幾個(gè)變量,就對(duì)應(yīng)幾個(gè)對(duì)象,不能少,也不能多
Traceback (most recent call last):
? File "
ValueError: too many values to unpack
?如果這樣賦值,也得兩邊數(shù)目一致:
>>> one,two,three,four = "good"
>>> one
'g'
>>> two
'o'
>>> three
'o'
>>> four
'd'
?這就相當(dāng)于把good分拆為一個(gè)一個(gè)的字母,然后對(duì)應(yīng)著賦值給左邊的變量。
>>> [name,site] = ["qiwsir","qiwsir.github.io"]
>>> name
'qiwsir'
>>> site
'qiwsir.github.io'
>>> name,site = ("qiwsir","qiwsir.github.io")
>>> name
'qiwsir'
>>> site
'qiwsir.github.io'
?這樣也行呀。
其實(shí),賦值的樣式不少,核心就是將變量和某對(duì)象對(duì)應(yīng)起來(lái)。對(duì)象,可以用上面的方式,也許是這樣的
>>> site = "qiwsir.github.io"
>>> name, main = site.split(".")[0], site.split(".")[1]?? #還記得str.split(
>>> name
'qiwsir'
>>> main
'github'
?增強(qiáng)賦值
這個(gè)東西聽(tīng)名字就是比賦值強(qiáng)的。
在python中,將下列的方式稱為增強(qiáng)賦值:
增強(qiáng)賦值語(yǔ)句 | 等價(jià)于語(yǔ)句 |
---|---|
x+=y | x = x+y |
x-=y | x = x-y |
x*=y | x = x*y |
x/=y | x = x/y |
其它類似結(jié)構(gòu):x&=y x|=y x^=y x%=y x>>=y x<<=y x**=y x//=y
看下面的例子,有一個(gè)list,想得到另外一個(gè)列表,其中每個(gè)數(shù)比原來(lái)list中的大2。可以用下面方式實(shí)現(xiàn):
>>> number
[1, 2, 3, 4, 5]
>>> number2 = []
>>> for i in number:
...???? i = i+2
...???? number2.append(i)
...
>>> number2
[3, 4, 5, 6, 7]
?如果用上面的增強(qiáng)賦值,i = i+2可以寫成 i +=2,試一試吧:
>>> number
[1, 2, 3, 4, 5]
>>> number2 = []
>>> for i in number:
...???? i +=2
...???? number2.append(i)
...
>>> number2
[3, 4, 5, 6, 7]
?這就是增強(qiáng)賦值。為什么用增強(qiáng)賦值?因?yàn)閕 +=2,比i = i+2計(jì)算更快,后者右邊還要拷貝一個(gè)i。
上面的例子還能修改,別忘記了list解析的強(qiáng)大功能呀。
>>> [i+2 for i in number]
[3, 4, 5, 6, 7]
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
