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

做者 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)。 轉載請註明出處。 原文:www.jianshu.com/p/d88e11bc7…程序員

《Python探索之旅》全系列編程

內容簡介


  1. 前言
  2. 什麼是變量及變量的做用
  3. Python 的數據類型
  4. 第一次使用函數
  5. 總結
  6. 第一部分第五課預告

1. 前言


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

從如今開始,咱們將逐漸深刻學習 Python 的語法。這一課咱們來學習一個重要的編程概念:變量微信

變量,在英語中是 variable,表示「變量,可變的,易變的」。編程語言

變量這個概念相當重要,必定要好好掌握。但我向你保證,這一課沒有什麼太複雜的內容,讓咱們開始愉快的學習之旅吧~函數

2. 什麼是變量及變量的做用


變量是大多數(甚至是全部)編程語言中都有的概念之一。咱們能夠說,沒有變量就不能編程,這並不誇張。就好像咱們說「無胡歌不仙劍」同樣:「無變量不編程」。學習

變量是什麼?

變量簡單來講就是你的程序中的數據,存儲在計算機中的。變量是由字母、數字和其餘符號組成的代碼,你能夠將其連接到程序中的數據,以即可以屢次使用它並對其進行一些更有意思的操做。在程序中能夠進行操做是很好的,可是若是不能將操做的結果存儲在某個地方,那麼很快就會顯得有點無聊了。測試

咱們能夠將計算機的內存(memory)想像成一個有不少抽屜的大櫃子。每一個抽屜均可以包含數據,其中一些數據將是程序中的變量。ui

變量是如何工做的


這很是簡單。你能夠想象你對 Python 說:「我但願在我命名的 age (表示「年齡」)變量中存儲個人年齡,這樣我就能夠記住個人年齡(若是個人記憶力不是那麼好的話),對這個變量加一(每當我過生日那天),而且在必要時顯示這個變量的值。」this

目前你可能還看不到存儲程序中的數據的意義。可是,若是你什麼也不存儲,那你也幾乎什麼都作不了。

在 Python 中,要給變量賦值,是很是簡單的,只須要這樣寫:

variable_name = value
複製代碼

variable_name 是變量名,name 表示「名字」。value 是變量的值,value 表示「值」。變量名和變量的值之間用 = 號鏈接。

變量必須遵照一些基本的語法規則:

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

  2. 變量名不能以數字開頭。所以,2_my_age 不是合法的變量名。

  3. Python 區分大小寫,這意味着 AGEaGeage 是不一樣的變量。

除了以上必須遵照的命名規則外,每一個程序員也有一些我的的命名習慣。我本身比較傾向於兩種變量命令的習慣:

  • 第一種命名習慣:變量名都是由小寫字母構成,並用下劃線 _ 鏈接單詞。例如,若是我須要建立一個儲存本身年齡的變量,則會將其命名爲 my_age。my 表示「個人」。

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

你可使用任何你喜歡的命名習慣,可是儘可能在你的程序中保持一致的命名習慣,特別是當你參與大型項目時。

所以,若是我建立存儲個人年齡的變量,能夠用如下語法:

my_age = 32
複製代碼

按下回車以後,Python 的解釋器當即顯示主提示符 >>>,沒有任何消息。這意味着 Python 解釋器正確理解了你的輸入,而且沒有發現任何錯誤。

上面的 my_age = 32 這一操做一般被稱爲「將值分配給變量」(或簡稱爲「變量賦值」)。咱們說,已經將 32 這個值分配給了變量 my_age

如今,你只需在 Python 解釋器中輸入該變量的名字,便可顯示它的值:

變量名,= 符號,和變量的值之間的空格數目是可選的。我這裏用了一個空格,出於可讀性考慮。

好的,一切看起來都那麼美好,可是咱們能夠用此變量來作什麼操做呢?

你能夠對此變量進行不少操做,包括上一課咱們所作的數學運算,只不過這一次你是用變量名來代替整數值了。你甚至能夠將此變量進行計算後的值再賦值給此變量自身。

例如,讓咱們嘗試將 my_age 這個變量的值加 2,再賦值給它本身:

my_age = my_age + 2
複製代碼

如今,讓咱們嘗試對 my_age 變量進行操做,並把操做後的值分配給另外一個變量 my_age_x2

my_age_x2 = my_age * 2
複製代碼

變量賦值的概念並不複雜,但卻很是強大。與某些編程語言相比,在 Python 中爲變量賦值是很是簡單的。若是你事先沒有建立變量,Python 會自動爲你打理一切。若是該變量已經存在,則將舊值刪除並替換爲新值。還有什麼比這更簡單的呢?

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

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

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

這些關鍵字是被 Python 所保留的,所以你不能使用這些名稱來爲變量命名。

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

請不要去死記硬背這些關鍵字,隨着你用 Python 編程的深刻,你天然而然會記住它們的。咱們的課程也會用到這些關鍵字中的大部分。

3. Python 的數據類型


接下來,咱們要學習在許多編程語言中都有的一個很是重要的概念。請認真對待,由於你必須熟悉這個概念,才能繼續本課程的學習。放心,只要你專心,就不會有什麼太複雜的概念。

什麼是數據類型?

數據類型,在英語中是 data type。data 表示「數據」,type 表示「類型」。

到目前爲止,咱們在程序中只使用過數字。雖然咱們不多會編寫沒有任何數字的程序,可是數字絕對不是咱們能夠在 Python 中使用的惟一數據。以後的課程中,咱們甚至還會學習如何建立你本身的數據類型。

Python 須要知道使用的數據是什麼類型的,以便知道對此數據能夠執行哪些操做。

在本課中,你將學習如何使用字符串。對字符串作「乘法」,和對數字作乘法,是不同的。對於某些類型的數據,乘法更是沒有意義的。所以,Python 將每一個數據與一個類型相關聯,類型決定了對此數據能夠進行哪些操做。

不一樣的數據類型


暫時,咱們只會學習最經常使用和最容易處理的數據類型。之後會有專門的章節,用於講解更復雜的數據類型。

整數

是的,Python 將整數與浮點數區分開。

爲何要區分開呢?

最初,主要是爲了解決內存空間的問題。但對於計算機而言,對浮點數執行的操做與對整數執行的操做並不相同,所以這種區分仍然有意義。

整數類型在 Python 中是 int(int 是 integer 的縮寫,表示「整數」)。整數,簡單來講是沒有小數點的數字。例如:

7
複製代碼

在上一課中,咱們已經學習過對整數類型的數據能夠執行哪些操做。所以,咱們再也不贅述。

浮點數

浮點數,簡單來講是帶小數點的數,例如 3.14。浮點數在 Python 中是 float(float 表示「浮動」)。若是一個數字沒有浮點部分(小數點後面的部分),可是你但願 Python 將其視爲浮點數,則能夠向其添加浮點部分 0,例如 52.0

小數點後的數字位數不是無限的,由於在計算機科學中沒有什麼是無限的。可是精確度對於處理高精度的數據是很是重要的。

字符串

幸虧,Python 中可用的數據類型不只限於數字。咱們在本課中學習的最後一個經常使用的「簡單」類型是字符串。這種類型的數據能夠存儲一連串字符(character)。

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

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

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

咱們能夠像對待數字(和全部數據類型)同樣,將字符串存儲在變量中,例如 my_string = "Hello, everybody!"

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

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

這是由於 Python 認爲 I'm 中的單引號是字符串的結尾,就不知道拿後面的字符怎麼辦了。

爲了克服這個問題,咱們必須在字符串的中間對單引號進行特殊處理。所以,咱們在字符串中包含的單引號以前插入反斜槓字符 \

string = 'I\'m Iron Man!' 複製代碼

若是將雙引號用做定界符,則必須轉義雙引號:

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

\(反斜槓)被稱爲「轉義字符」,用於轉義其餘有用的符號。

例如,\n 是「換行符」,能夠對字符串進行換行(例如,"I'm Oscar.\nWhat's your name?")。

能夠看到,Python 解釋器顯示了換行符,不過,是以 \n 原樣輸出的。在下面的內容中,咱們將看到如何實際顯示這些字符串,以及解釋器爲何沒有按咱們所指望地顯示它們。

要在字符串中寫一個反斜槓自己,你必須先對其進行轉義,寫成 \\

使用三引號 """ 做爲字符串的定界符,能夠省去轉義雙引號和單引號的步驟。並且,你不須要用 \n 做爲換行符,也能夠編寫多行。

能夠看到,>>> 提示符被 ... 提示符代替。這意味着 Python 解釋器認爲你還沒有完成此命令的輸入。直到新的 >>> 符號出現時,才宣告結束。換行符將在字符串中被自動替換爲 \n

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

好的,咱們已經完成了簡單數據類型的介紹。

一點小技巧


在上一課中,咱們學習了用於處理數字的「經典」運算符(+-*///%)。這些運算符不止能操做數字,咱們以後也會看到它們還能夠進行其餘數據類型的操做。

在你之後的 Python 編程中,你常常會對變量進行「增長操做」。增長操做是指將變量的值加上一個數字。到目前爲止,咱們是用如下操做來將變量增長 1 的:

variable = variable + 1
複製代碼

這種語法很清晰直觀,可是比較冗長。衆所周知,程序員天生就是「懂得偷懶」的。所以,咱們發明了更短的寫法:

variable += 1
複製代碼

運算符 += 等效於將變量後面的值加到變量中。運算符 -=*=/=%=//= 的用法是同樣的。你能夠自行測試一下。

一些技巧


Python 提供了一種很是簡單的方法來交換兩個變量(交換它們的值)。在其餘編程語言中,咱們常常須要第三個變量的輔助,這第三個變量用於保存兩個變量的值中的一個。可是,在 Python 中咱們能夠很簡單地達到目的:

a = 7
b = 30
a,b = b,a
複製代碼

如你所見,在執行第 3 行以後,變量 a 和 b 已經交換了它們的值。

咱們還能夠很是簡單地將相同的值分配給多個變量:

x = y = 7
複製代碼

並且,咱們還能夠將一行比較長的命令寫在幾行中,用 \(反斜槓)符號:

如你所見,符號 \(反斜槓)向 Python 表示「此命令在下一行繼續」。這樣,你就能夠將命令分紅幾行。命令分幾行寫的時候,能夠看到 >>> 這個主提示符就變爲 ... 這個副提示符了。

4. 第一次使用函數


好的,一切進展順利~

不過,我想在這有關變量的一課的最後,介紹一下函數的使用。雖然以後咱們會有專門的一課來說解函數,可是我接下來要向你展現的知識點,仍是頗有用的,也能夠做爲函數的入門。

使用函數

函數是什麼?

函數,在英語中是 function,表示「函數,功能,運做」。

顧名思義,函數是有必定功能的,是會執行一些操做(運做)的。

函數執行必定數量的預先存儲的命令。簡單來講,函數就像存儲了多個命令(例如,「起牀,穿衣服,洗漱,吃早飯,上班」)以執行特定操做,並給它起個名字(例如,「早上作的事」)。而後,你就能夠根據須要,屢次調用此函數的名稱便可(這避免了屢次重複書寫這些命令)。咱們在函數那一課會更詳細地介紹相關知識點。

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

函數的使用要遵循如下的語法:

fonction_name(parameter_1, parameter_2, …, parameter_n)
複製代碼
  • 首先,編寫函數的名稱(fonction_name)。

  • 而後,你能夠將函數的參數放在括號 () 中,用逗號 , 隔開。若是函數不帶任何參數,括號也是不可少的,只是括號之間不包含任何內容。

type 函數


在上一節中,咱們學習了簡單的數據類型(至少其中一些)。

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

其餘一些編程語言,例如 C語言,C++,Java,變量是須要預先聲明類型的。例如在 C語言中,建立一個 int 型變量並賦值是像這樣的:int a = 10; 。可是 Python 卻不須要你聲明變量 a 是 int 類型,它能夠本身根據賦值的數據來推斷。

所以,咱們說 Python 是動態類型的語言,而 C語言、Java、C++ 是靜態類型的語言。

咱們能夠用 type 函數來輸出變量的類型。type 表示「類型」。

type 函數的語法很簡單:

type(variable_name)
複製代碼

type 函數返回做爲參數傳遞的變量的類型。例如:

a = 10
type(a)
複製代碼

Python 會告訴你,變量 a 屬於 int 類。關於 class(表示「類」)的概念,咱們會在第三部分詳細講解。暫時咱們只要知道 class(類)其實就表明了一種數據類型。

固然了,你也能夠不借助變量來進行測試:

str 是 string 的縮寫。

print 函數


咱們再來學習十分經常使用的函數:print 函數,這個函數能夠顯示變量的值。print 表示「打印」。

可是,咱們以前在 Python 解釋器中輸入變量名,就能夠顯示變量的值了。爲何還須要 print 函數呢?

誠然,Python 解釋器在交互模式下很好地顯示了變量的值,是由於它會自動顯示全部它能夠顯示的內容,以便跟隨一個程序的全部步驟。可是,當你不使用解釋器,僅在 Python 的代碼中輸入變量名,是沒法爲你輸出變量的值的。此外,咱們也注意到,解釋器將字符串用定界符括起來並按原樣顯示轉義字符(如 \n)。

print 函數專門用於顯示,它的參數數量是可變的,也就是說,你能夠要求它顯示一個或多個變量。示例以下:

第一次調用 print 函數是很容易理解的,就是顯示變量 a 的值,爲 7。

第二次調用 print 顯示:

a = 10 and b = 5
複製代碼

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

當 Python 解釋此函數調用時,它將按照參數的順序顯示,並以空格分隔。

你能夠用其餘數據類型來測試 print 函數,例如帶有換行符 \n 的字符串。

能夠看到,print 函數很好地解釋了 \n 換行符,對字符串進行了換行輸出。

Hello World 小示例

學習任何編程語言時,一般都會編寫顯示 Hello World! 的程序。

Hello World! 表示「你好,世界!」,是軟件界的經典例程,由於這能夠很快地展現一種編程語言的基本語法。

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

print("Hello World !")
複製代碼

Python 真是很是簡潔。

5. 總結


  • 你能夠用變量來存儲程序中的數據。

  • 你能夠對這些變量進行不一樣的操做:顯示它們,使用它們進行計算,等等。

  • 要爲變量賦值,咱們使用這樣的方式: variable_name = value

  • 有不一樣的變量類型,取決於你要儲存的數據。int,float,str(字符串),等等。

  • 咱們能夠用 type 函數來獲知數據類型。

  • 爲了顯示數據,例如變量的值,咱們可使用 print 函數。

6. 第一部分第五課預告


今天的課就到這裏,一塊兒加油吧!

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


我是 謝恩銘,公衆號「程序員聯盟」(微信號:coderhub)運營者,慕課網精英講師 Oscar 老師,終生學習者。 熱愛生活,喜歡游泳,略懂烹飪。 人生格言:「向着標杆直跑」

相關文章
相關標籤/搜索