跟老齊學Python之賦值,簡單也不簡單

來源:互聯網
上載者:User
變數命名

在《初識永遠強大的函數》一文中,有一節專門討論“取名字的學問”,就是有關變數名稱的問題,本溫故而知新的原則,這裡要複習:

名稱格式:(底線或者字母)+(任意數目的字母,數字或底線)

注意:
1.區分大小寫
2.禁止使用保留字
3.遵守通常習慣
•以單一底線開頭的變數名(_X)不會被from module import *語句匯入的。
•前後有底線的變數名(X)是系統定義的變數名,對解譯器有特殊意義。
•以兩個底線開頭,但結尾沒有兩個底線的變數名(__X)是類本地(壓縮)變數。
•通過互動模式運行時,只有單個底線變數(_)會儲存最後的運算式結果。

需要解釋一下保留字,就是python裡面保留了一些單詞,這些單詞不能讓使用者來用作變數名稱。都有哪些呢?(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

需要都記住嗎?當然不需要了。一方面,可以在網上隨手查到,另外,還能這樣:

代碼如下:

>>> not = 3
File "", line 1
not = 3
^
SyntaxError: invalid syntax

>>> pass = "hello,world"
File "", line 1
pass = "hello,world"
^
SyntaxError: invalid syntax

在互動模式的實驗室中,用保留字做變數,就報錯了。當然,這時候就要換名字了。

以上原則,是基本原則。在實際編程中,大家通常還這樣做,以便讓程式更具有可讀性:
•名字具有一定的含義。比如寫:n = "qiwsir",就不如寫:name = "qiwsir"更好。
•名字不要誤導別人。比如用account_list指一組帳號,就會被人誤解為是list類型的資料,事實上可能是也可能不是。所以這時候最好換個名稱,比如直接用accounts。
•名字要有意義的區分,有時候你可能會用到a1,a2之類的名字,最好不要這麼做,換個別的方式,通過字面能夠看出一定的區分來更好。
•最好是名稱能夠讀出來,千萬別自己造英文單詞,也別亂用所寫什麼的,特別是貴國的,還喜歡用漢語拼音縮寫來做為名字,更麻煩了,還不如全拼呢。最好是用完整的單詞或者公認的不會引起歧義的縮寫。
•單個字母和數字就少用了,不僅是顯得你太懶惰,還會因為在一段代碼中可能有很多個單個的字母和數字,為搜尋帶來麻煩,別人也更不知道你的i和他理解的i是不是一個含義。

總之,取名字,講究不少。不論如何,要記住一個標準:明確

指派陳述式

對於指派陳述式,看官已經不陌生了。任何一個變數,在python中,只要想用它,就要首先賦值。

語句格式:變數名稱 = 對象

上一節中也分析了賦值的本質。

還有一種賦值方式,叫做隱式賦值,通過import、from、del、class、for、函數參數。等模組匯入,函數和類的定義,for迴圈變數以及函數參數都是隱式賦值運算。這方面的東西後面會徐徐道來。

代碼如下:


>>> name = "qiwsir"

>>> name, website = "qiwsir","qiwsir.github.io" #多個變數,按照順序依次賦值
>>> name
'qiwsir'
>>> website
'qiwsir.github.io'

>>> name, website = "qiwsir" #有幾個變數,就對應幾個對象,不能少,也不能多
Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack

如果這樣賦值,也得兩邊數目一致:

代碼如下:


>>> one,two,three,four = "good"
>>> one
'g'
>>> two
'o'
>>> three
'o'
>>> four
'd'

這就相當於把good分拆為一個一個的字母,然後對應著賦值給左邊的變數。

代碼如下:


>>> [name,site] = ["qiwsir","qiwsir.github.io"]
>>> name
'qiwsir'
>>> site
'qiwsir.github.io'
>>> name,site = ("qiwsir","qiwsir.github.io")
>>> name
'qiwsir'
>>> site
'qiwsir.github.io'

這樣也行呀。

其實,賦值的樣式不少,核心就是將變數和某對象對應起來。對象,可以用上面的方式,也許是這樣的

代碼如下:


>>> site = "qiwsir.github.io"
>>> name, main = site.split(".")[0], site.split(".")[1] #還記得str.split()這個東東嗎?忘記了,google一下吧。
>>> name
'qiwsir'
>>> main
'github'

增強賦值

這個東西聽名字就是比賦值強的。

在python中,將下列的方式稱為增強賦值:

增強指派陳述式 等價於語句
x+=y x = x+y
x-=y x = x-y
x*=y x = x*y
x/=y x = x/y

其它類似結構:x&=y  x|=y  x^=y  x%=y  x>>=y x<<=y  x**=y  x//=y

看下面的例子,有一個list,想得到另外一個列表,其中每個數比原來list中的大2。可以用下面方式實現:

代碼如下:


>>> number
[1, 2, 3, 4, 5]
>>> number2 = []
>>> for i in number:
... i = i+2
... number2.append(i)
...
>>> number2
[3, 4, 5, 6, 7]

如果用上面的增強賦值,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]

這就是增強賦值。為什麼用增強賦值?因為i +=2,比i = i+2計算更快,後者右邊還要拷貝一個i。

上面的例子還能修改,別忘記了list解析的強大功能呀。

代碼如下:


>>> [i+2 for i in number]
[3, 4, 5, 6, 7]

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.