Python探索之旅 | 第一部分第四課:變量的奇幻世界

作者 謝恩銘,公眾號「程序員聯(lián)盟」(微信號:coderhub)。
轉(zhuǎn)載請注明出處。
原文:http://www.itdecent.cn/p/d88e11bc7fec

《Python探索之旅》全系列

內(nèi)容簡介


  1. 前言
  2. 什么是變量及變量的作用
  3. Python 的數(shù)據(jù)類型
  4. 第一次使用函數(shù)
  5. 總結(jié)
  6. 第一部分第五課預(yù)告

1. 前言


在上一課 Python探索之旅 | 第一部分第三課:初識Python的解釋器 中,盡管你可能沒有注意到,但其實你已經(jīng)輸入了 Python 的第一條命令。

從現(xiàn)在開始,我們將逐漸深入學(xué)習(xí) Python 的語法。這一課我們來學(xué)習(xí)一個重要的編程概念:變量

變量,在英語中是 variable,表示“變量,可變的,易變的”。

變量這個概念至關(guān)重要,一定要好好掌握。但我向你保證,這一課沒有什么太復(fù)雜的內(nèi)容,讓我們開始愉快的學(xué)習(xí)之旅吧~

2. 什么是變量及變量的作用


變量是大多數(shù)(甚至是所有)編程語言中都有的概念之一。我們可以說,沒有變量就不能編程,這并不夸張。就好像我們說“無胡歌不仙劍”一樣:“無變量不編程”。

變量是什么?

變量簡單來說就是你的程序中的數(shù)據(jù),存儲在計算機中的。變量是由字母、數(shù)字和其他符號組成的代碼,你可以將其鏈接到程序中的數(shù)據(jù),以便可以多次使用它并對其進行一些更有意思的操作。在程序中可以進行操作是很好的,但是如果不能將操作的結(jié)果存儲在某個地方,那么很快就會顯得有點無聊了。

我們可以將計算機的內(nèi)存(memory)想像成一個有很多抽屜的大柜子。每個抽屜都可以包含數(shù)據(jù),其中一些數(shù)據(jù)將是程序中的變量。

變量是如何工作的


這非常簡單。你可以想象你對 Python 說:“我希望在我命名的 age (表示“年齡”)變量中存儲我的年齡,這樣我就可以記住我的年齡(如果我的記憶力不是那么好的話),對這個變量加一(每當(dāng)我過生日那天),并且在必要時顯示這個變量的值?!?/p>

目前你可能還看不到存儲程序中的數(shù)據(jù)的意義。但是,如果你什么也不存儲,那你也幾乎什么都做不了。

在 Python 中,要給變量賦值,是非常簡單的,只需要這樣寫:

variable_name = value

variable_name 是變量名,name 表示“名字”。value 是變量的值,value 表示“值”。變量名和變量的值之間用 = 號連接。

變量必須遵守一些基本的語法規(guī)則:

  1. 變量名只能由英文字母(大寫或小寫字母)、數(shù)字和下劃線符號(_)組成。例如 my_age_2 。

  2. 變量名不能以數(shù)字開頭。因此,2_my_age 不是合法的變量名。

  3. Python 區(qū)分大小寫,這意味著 AGE,aGeage 是不同的變量。

除了以上必須遵守的命名規(guī)則外,每個程序員也有一些個人的命名習(xí)慣。我自己比較傾向于兩種變量命令的習(xí)慣:

  • 第一種命名習(xí)慣:變量名都是由小寫字母構(gòu)成,并用下劃線 _ 連接單詞。例如,如果我需要創(chuàng)建一個儲存自己年齡的變量,則會將其命名為 my_age。my 表示“我的”。

  • 第二種命名習(xí)慣:變量名中每個單詞的第一個字母大寫,但第一個單詞的第一個字母小寫,例如 myAge。

你可以使用任何你喜歡的命名習(xí)慣,但是盡量在你的程序中保持一致的命名習(xí)慣,特別是當(dāng)你參與大型項目時。

因此,如果我創(chuàng)建存儲我的年齡的變量,可以用以下語法:

my_age = 32

按下回車之后,Python 的解釋器立即顯示主提示符 >>>,沒有任何消息。這意味著 Python 解釋器正確理解了你的輸入,并且沒有發(fā)現(xiàn)任何錯誤。

上面的 my_age = 32 這一操作通常被稱為“將值分配給變量”(或簡稱為“變量賦值”)。我們說,已經(jīng)將 32 這個值分配給了變量 my_age。

現(xiàn)在,你只需在 Python 解釋器中輸入該變量的名字,即可顯示它的值:

變量名,= 符號,和變量的值之間的空格數(shù)目是可選的。我這里用了一個空格,出于可讀性考慮。

好的,一切看起來都那么美好,但是我們可以用此變量來做什么操作呢?

你可以對此變量進行很多操作,包括上一課我們所做的數(shù)學(xué)運算,只不過這一次你是用變量名來代替整數(shù)值了。你甚至可以將此變量進行計算后的值再賦值給此變量自身。

例如,讓我們嘗試將 my_age 這個變量的值加 2,再賦值給它自己:

my_age = my_age + 2

現(xiàn)在,讓我們嘗試對 my_age 變量進行操作,并把操作后的值分配給另一個變量 my_age_x2。

my_age_x2 = my_age * 2

變量賦值的概念并不復(fù)雜,但卻非常強大。與某些編程語言相比,在 Python 中為變量賦值是非常簡單的。如果你事先沒有創(chuàng)建變量,Python 會自動為你打理一切。如果該變量已經(jīng)存在,則將舊值刪除并替換為新值。還有什么比這更簡單的呢?

此外,有一些關(guān)鍵字(keyword)是 Python 預(yù)留的,也就是說,你不能使用這些關(guān)鍵字來命名變量。

以下是 Python 3 的關(guān)鍵字列表(一共有 33 個關(guān)鍵字,除前三個關(guān)鍵字,其余按英語字母表順序排序):

False True None
and as assert break class continue
def del elif else except finally
for from global if import in
is lambda nonlocal not or pass
raise return try while with yield

這些關(guān)鍵字是被 Python 所保留的,因此你不能使用這些名稱來為變量命名。

上表中,前三個關(guān)鍵字(False,True,None)的首字母是大寫的,其余的關(guān)鍵字首字母都是小寫。

請不要去死記硬背這些關(guān)鍵字,隨著你用 Python 編程的深入,你自然而然會記住它們的。我們的課程也會用到這些關(guān)鍵字中的大部分。

3. Python 的數(shù)據(jù)類型


接下來,我們要學(xué)習(xí)在許多編程語言中都有的一個非常重要的概念。請認(rèn)真對待,因為你必須熟悉這個概念,才能繼續(xù)本課程的學(xué)習(xí)。放心,只要你專心,就不會有什么太復(fù)雜的概念。

什么是數(shù)據(jù)類型?

數(shù)據(jù)類型,在英語中是 data type。data 表示“數(shù)據(jù)”,type 表示“類型”。

到目前為止,我們在程序中只使用過數(shù)字。雖然我們很少會編寫沒有任何數(shù)字的程序,但是數(shù)字絕對不是我們可以在 Python 中使用的唯一數(shù)據(jù)。之后的課程中,我們甚至還會學(xué)習(xí)如何創(chuàng)建你自己的數(shù)據(jù)類型。

Python 需要知道使用的數(shù)據(jù)是什么類型的,以便知道對此數(shù)據(jù)可以執(zhí)行哪些操作。

在本課中,你將學(xué)習(xí)如何使用字符串。對字符串做“乘法”,和對數(shù)字做乘法,是不一樣的。對于某些類型的數(shù)據(jù),乘法更是沒有意義的。因此,Python 將每個數(shù)據(jù)與一個類型相關(guān)聯(lián),類型決定了對此數(shù)據(jù)可以進行哪些操作。

不同的數(shù)據(jù)類型


暫時,我們只會學(xué)習(xí)最常用和最容易處理的數(shù)據(jù)類型。以后會有專門的章節(jié),用于講解更復(fù)雜的數(shù)據(jù)類型。

整數(shù)

是的,Python 將整數(shù)與浮點數(shù)區(qū)分開。

為什么要區(qū)分開呢?

最初,主要是為了解決內(nèi)存空間的問題。但對于計算機而言,對浮點數(shù)執(zhí)行的操作與對整數(shù)執(zhí)行的操作并不相同,因此這種區(qū)分仍然有意義。

整數(shù)類型在 Python 中是 int(int 是 integer 的縮寫,表示“整數(shù)”)。整數(shù),簡單來說是沒有小數(shù)點的數(shù)字。例如:

7

在上一課中,我們已經(jīng)學(xué)習(xí)過對整數(shù)類型的數(shù)據(jù)可以執(zhí)行哪些操作。因此,我們不再贅述。

浮點數(shù)

浮點數(shù),簡單來說是帶小數(shù)點的數(shù),例如 3.14。浮點數(shù)在 Python 中是 float(float 表示“浮動”)。如果一個數(shù)字沒有浮點部分(小數(shù)點后面的部分),但是你希望 Python 將其視為浮點數(shù),則可以向其添加浮點部分 0,例如 52.0。

小數(shù)點后的數(shù)字位數(shù)不是無限的,因為在計算機科學(xué)中沒有什么是無限的。但是精確度對于處理高精度的數(shù)據(jù)是非常重要的。

字符串

幸好,Python 中可用的數(shù)據(jù)類型不僅限于數(shù)字。我們在本課中學(xué)習(xí)的最后一個常用的“簡單”類型是字符串。這種類型的數(shù)據(jù)可以存儲一連串字符(character)。

字符串,在英語中是 string。string 的原意是“一串,一行,弦,線”。

在 Python 中,你可以使用不同的方式來書寫字符串:

  • 用雙引號作為定界符,例如 "this is a string" 。
  • 用單引號作為定界符,例如 'this is a string' 。
  • 用三個雙引號作為定界符,例如 """this is a string""" 。
  • 用三個單引號作為定界符,例如 '''this is a string'''

我們可以像對待數(shù)字(和所有數(shù)據(jù)類型)一樣,將字符串存儲在變量中,例如 my_string = "Hello, everybody!"

如果使用簡單的定界符(雙引號或單引號)將字符串括起來,此字符串中又有雙引號或單引號,則會出現(xiàn)問題。

例如,如果輸入 string = 'I'm Iron Man!',則會收到錯誤信息:

這是因為 Python 認(rèn)為 I'm 中的單引號是字符串的結(jié)尾,就不知道拿后面的字符怎么辦了。

為了克服這個問題,我們必須在字符串的中間對單引號進行特殊處理。因此,我們在字符串中包含的單引號之前插入反斜杠字符 \。

string = 'I\'m Iron Man!'

如果將雙引號用作定界符,則必須轉(zhuǎn)義雙引號:

string = "\"A strong man will struggle with the storms of fate.\" (Thomas Addison)"

\(反斜杠)被稱為“轉(zhuǎn)義字符”,用于轉(zhuǎn)義其他有用的符號。

例如,\n 是“換行符”,可以對字符串進行換行(例如,"I'm Oscar.\nWhat's your name?")。

可以看到,Python 解釋器顯示了換行符,不過,是以 \n 原樣輸出的。在下面的內(nèi)容中,我們將看到如何實際顯示這些字符串,以及解釋器為什么沒有按我們所期望地顯示它們。

要在字符串中寫一個反斜杠本身,你必須先對其進行轉(zhuǎn)義,寫成 \\

使用三引號 """ 作為字符串的定界符,可以省去轉(zhuǎn)義雙引號和單引號的步驟。而且,你不需要用 \n 作為換行符,也可以編寫多行。

可以看到,>>> 提示符被 ... 提示符代替。這意味著 Python 解釋器認(rèn)為你尚未完成此命令的輸入。直到新的 >>> 符號出現(xiàn)時,才宣告結(jié)束。換行符將在字符串中被自動替換為 \n 。

你可以使用三個單引號 ''' 來代替三個雙引號 """。我個人不太使用 ''' 定界符,但是你得知道這種寫法的存在,如果你以后在別人的 Python 代碼中看到 ''',不必感到驚訝。

好的,我們已經(jīng)完成了簡單數(shù)據(jù)類型的介紹。

一點小技巧


在上一課中,我們學(xué)習(xí)了用于處理數(shù)字的“經(jīng)典”運算符(+-,*/,//%)。這些運算符不止能操作數(shù)字,我們之后也會看到它們還可以進行其他數(shù)據(jù)類型的操作。

在你以后的 Python 編程中,你經(jīng)常會對變量進行“增加操作”。增加操作是指將變量的值加上一個數(shù)字。到目前為止,我們是用以下操作來將變量增加 1 的:

variable = variable + 1

這種語法很清晰直觀,但是比較冗長。眾所周知,程序員天生就是“懂得偷懶”的。因此,我們發(fā)明了更短的寫法:

variable += 1

運算符 += 等效于將變量后面的值加到變量中。運算符 -=*=, /=,%=,//= 的用法是一樣的。你可以自行測試一下。

一些技巧


Python 提供了一種非常簡單的方法來交換兩個變量(交換它們的值)。在其他編程語言中,我們經(jīng)常需要第三個變量的輔助,這第三個變量用于保存兩個變量的值中的一個。但是,在 Python 中我們可以很簡單地達到目的:

a = 7
b = 30
a,b = b,a

如你所見,在執(zhí)行第 3 行之后,變量 a 和 b 已經(jīng)交換了它們的值。

我們還可以非常簡單地將相同的值分配給多個變量:

x = y = 7

而且,我們還可以將一行比較長的命令寫在幾行中,用 \(反斜杠)符號:

如你所見,符號 \(反斜杠)向 Python 表示“此命令在下一行繼續(xù)”。這樣,你就可以將命令分成幾行。命令分幾行寫的時候,可以看到 >>> 這個主提示符就變?yōu)?... 這個副提示符了。

4. 第一次使用函數(shù)


好的,一切進展順利~

不過,我想在這有關(guān)變量的一課的最后,介紹一下函數(shù)的使用。雖然之后我們會有專門的一課來講解函數(shù),但是我接下來要向你展示的知識點,還是很有用的,也可以作為函數(shù)的入門。

使用函數(shù)

函數(shù)是什么?

函數(shù),在英語中是 function,表示“函數(shù),功能,運作”。

顧名思義,函數(shù)是有一定功能的,是會執(zhí)行一些操作(運作)的。

函數(shù)執(zhí)行一定數(shù)量的預(yù)先存儲的命令。簡單來說,函數(shù)就像存儲了多個命令(例如,“起床,穿衣服,洗漱,吃早飯,上班”)以執(zhí)行特定操作,并給它起個名字(例如,“早上做的事”)。然后,你就可以根據(jù)需要,多次調(diào)用此函數(shù)的名稱即可(這避免了多次重復(fù)書寫這些命令)。我們在函數(shù)那一課會更詳細地介紹相關(guān)知識點。

大多數(shù)函數(shù)都需要至少一個參數(shù)(parameter)來處理數(shù)據(jù)。這些參數(shù)是你傳遞給函數(shù)的信息,以便函數(shù)可以處理這些信息。我要向你展示的函數(shù)也不例外。目前,這些知識點似乎有些難懂,但是請放心,我們會用示例來幫助理解。

函數(shù)的使用要遵循以下的語法:

fonction_name(parameter_1, parameter_2, …, parameter_n)
  • 首先,編寫函數(shù)的名稱(fonction_name)。

  • 然后,你可以將函數(shù)的參數(shù)放在括號 () 中,用逗號 , 隔開。如果函數(shù)不帶任何參數(shù),括號也是不可少的,只是括號之間不包含任何內(nèi)容。

type 函數(shù)


在上一節(jié)中,我們學(xué)習(xí)了簡單的數(shù)據(jù)類型(至少其中一些)。

Python 的強大功能之一是可以自動獲知變量的(數(shù)據(jù))類型,在變量被賦值時。

其他一些編程語言,例如 C語言,C++,Java,變量是需要預(yù)先聲明類型的。例如在 C語言中,創(chuàng)建一個 int 型變量并賦值是像這樣的:int a = 10; 。但是 Python 卻不需要你聲明變量 a 是 int 類型,它可以自己根據(jù)賦值的數(shù)據(jù)來推斷。

因此,我們說 Python 是動態(tài)類型的語言,而 C語言、Java、C++ 是靜態(tài)類型的語言。

我們可以用 type 函數(shù)來輸出變量的類型。type 表示“類型”。

type 函數(shù)的語法很簡單:

type(variable_name)

type 函數(shù)返回作為參數(shù)傳遞的變量的類型。例如:

a = 10
type(a)

Python 會告訴你,變量 a 屬于 int 類。關(guān)于 class(表示“類”)的概念,我們會在第三部分詳細講解。暫時我們只要知道 class(類)其實就代表了一種數(shù)據(jù)類型。

當(dāng)然了,你也可以不借助變量來進行測試:

str 是 string 的縮寫。

print 函數(shù)


我們再來學(xué)習(xí)十分常用的函數(shù):print 函數(shù),這個函數(shù)可以顯示變量的值。print 表示“打印”。

但是,我們之前在 Python 解釋器中輸入變量名,就可以顯示變量的值了。為什么還需要 print 函數(shù)呢?

誠然,Python 解釋器在交互模式下很好地顯示了變量的值,是因為它會自動顯示所有它可以顯示的內(nèi)容,以便跟隨一個程序的所有步驟。但是,當(dāng)你不使用解釋器,僅在 Python 的代碼中輸入變量名,是無法為你輸出變量的值的。此外,我們也注意到,解釋器將字符串用定界符括起來并按原樣顯示轉(zhuǎn)義字符(如 \n)。

print 函數(shù)專門用于顯示,它的參數(shù)數(shù)量是可變的,也就是說,你可以要求它顯示一個或多個變量。示例如下:

第一次調(diào)用 print 函數(shù)是很容易理解的,就是顯示變量 a 的值,為 7。

第二次調(diào)用 print 顯示:

a = 10 and b = 5

這第二次調(diào)用可能會有點難以理解。實際上,我們將四個參數(shù)傳遞給 print 函數(shù):兩個字符串以及變量 ab

當(dāng) Python 解釋此函數(shù)調(diào)用時,它將按照參數(shù)的順序顯示,并以空格分隔。

你可以用其他數(shù)據(jù)類型來測試 print 函數(shù),例如帶有換行符 \n 的字符串。

可以看到,print 函數(shù)很好地解釋了 \n 換行符,對字符串進行了換行輸出。

Hello World 小示例

學(xué)習(xí)任何編程語言時,通常都會編寫顯示 Hello World! 的程序。

Hello World! 表示“你好,世界!”,是軟件界的經(jīng)典例程,因為這可以很快地展示一種編程語言的基本語法。

在某些語言中,尤其是編譯語言(如 C語言,C++),可能需要好多行代碼才能獲得此結(jié)果。但是,正如我們看到的,在 Python 中,一行就足夠了:

print("Hello World !")

Python 真是非常簡潔。

5. 總結(jié)


  • 你可以用變量來存儲程序中的數(shù)據(jù)。

  • 你可以對這些變量進行不同的操作:顯示它們,使用它們進行計算,等等。

  • 要為變量賦值,我們使用這樣的方式: variable_name = value 。

  • 有不同的變量類型,取決于你要儲存的數(shù)據(jù)。int,float,str(字符串),等等。

  • 我們可以用 type 函數(shù)來獲知數(shù)據(jù)類型。

  • 為了顯示數(shù)據(jù),例如變量的值,我們可以使用 print 函數(shù)。

6. 第一部分第五課預(yù)告


今天的課就到這里,一起加油吧!

下一課:Python探索之旅 | 第一部分第五課:條件表達式


我是 謝恩銘,公眾號「程序員聯(lián)盟」(微信號:coderhub)運營者,慕課網(wǎng)精英講師 Oscar 老師,終身學(xué)習(xí)者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容