1. 程式人生 > 其它 >第03課:Python語言元素之變數

第03課:Python語言元素之變數

第03課:Python語言元素之變數

作為一個程式設計師,可能經常會被外行問到兩個問題,其一是“什麼是(計算機)程式”,其二是“寫(計算機)程式能做什麼”,這裡我先對這兩個問題做一個回答。程式是指令的集合寫程式就是用指令控制計算機做我們想讓它做的事情。那麼,為什麼要用Python語言來寫程式呢?因為Python語言簡單優雅,相比C、C++、Java這樣的程式語言,Python對初學者更加友好,當然這並不是說Python不像其他語言那樣強大,Python幾乎是無所不能的,在第一節課的時候,我們就說到了Python可以用於伺服器程式開發、雲平臺開發、資料分析、機器學習等各個領域。當然,Python語言還可以用來粘合其他語言開發的系統,所以也經常被戲稱為“膠水語言

”。

一些計算機常識

在開始系統的學習程式設計之前,我們先來科普一些計算機的基礎知識。計算機的硬體系統通常由五大部件構成,包括:運算器控制器儲存器輸入裝置輸出裝置。其中,運算器和控制器放在一起就是我們常說的中央處理器,它的功能是執行各種運算和控制指令。剛才我們提到過程式是指令的集合,寫程式就是將一系列的指令按照某種方式組織到一起,然後通過這些指令去控制計算機做我們想讓它做的事情。目前,我們使用的計算機基本都是“馮·諾依曼體系結構”的計算機,這種計算機有兩個關鍵點:一是要將儲存裝置與中央處理器分開;二是將資料以二進位制方式編碼

二進位制是一種“逢二進一”的計數法,跟我們人類使用的“逢十進一”的計數法本質是一樣的。人類因為有十根手指所以使用了十進位制,因為在計數時十根手指用完之後就只能用進位的方式來表示更大的數值。當然凡事都有例外,瑪雅人可能是因為長年光著腳的原因,把腳趾頭也都用上了,於是他們使用了二十進位制的計數法。在這種計數法的指導下,瑪雅人的歷法就與我們平常使用的歷法並不相同。按照瑪雅人的歷法,2012年是上一個所謂的“太陽紀”的最後一年,而2013年則是新的“太陽紀”的開始,後來這件事情被以訛傳訛的方式誤傳為”2012年是瑪雅人預言的世界末日“的荒誕說法。今天很多人都在猜測,瑪雅文明之所以發展緩慢跟使用了二十進位制是有關係的。對於計算機來說,二進位制在物理器件上最容易實現的,因為可以用高電壓表示1,用低電壓表示0。不是所有寫程式的人都需要知道十進位制與二進位制如何轉換,大多數時候我們即便不瞭解這些知識也能寫出程式,但是我們必須要知道計算機是使用二進位制計數的

,不管什麼資料到了計算機記憶體中都是以二進位制形式存在的

變數和型別

要想在計算機記憶體中儲存資料,首先就得說一說變數這個概念。在程式語言中,變數是資料的載體,簡單的說就是一塊用來儲存資料的記憶體空間,變數的值可以被讀取和修改,這是所有計算和控制的基礎。計算機能處理的資料有很多種型別,最常見的就是數值,除了數值之外還有文字、圖形、音訊、視訊等各種各樣的資料。雖然資料在計算機中都是以二進位制形態存在的,但是我們可以用不同型別的變數來表示資料型別的差異。Python中的資料型別很多,而且也允許我們自定義新的資料型別(這一點在後面會講到),這裡我們需要先了解幾種常用的資料型別。

  • 整型(int):Python中可以處理任意大小的整數,而且支援二進位制(如0b100
    ,換算成十進位制是4)、八進位制(如0o100,換算成十進位制是64)、十進位制(100)和十六進位制(0x100,換算成十進位制是256)的表示法。
  • 浮點型(float):浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,浮點數除了數學寫法(如123.456)之外還支援科學計數法(如1.23456e2)。
  • 字串型(str):字串是以單引號或雙引號括起來的任意文字,比如'hello'"hello"
  • 布林型(bool):布林值只有TrueFalse兩種值,要麼是True,要麼是False

變數命名

對於每個變數我們需要給它取一個名字,就如同我們每個人都有自己的名字一樣。在Python中,變數命名需要遵循以下這些規則,這些規則又分為必須遵守的硬性規則和建議遵守的非硬性規則。

  • 硬性規則:
    • 規則1:變數名由字母、數字和下劃線構成,數字不能開頭。需要說明的是,這裡說的字母指的是Unicode字元,Unicode稱為萬國碼,囊括了世界上大部分的文字系統,這也就意味著中文、日文、希臘字母等都可以作為變數名中的字元,但是像!@#這些特殊字元是不能出現在變數名中的,而且我們強烈建議大家儘可能使用英文字母
    • 規則2:大小寫敏感,簡單的說就是大寫的A和小寫的a是兩個不同的變數。
    • 規則3:變數名不要跟Python語言的關鍵字(有特殊含義的單詞,後面會講到)和保留字(如已有的函式、模組等的名字)發生重名的衝突
  • 非硬性規則:
    • 規則1:變數名通常使用小寫英文字母,多個單詞用下劃線進行連線。
    • 規則2:受保護的變數用單個下劃線開頭。
    • 規則3:私有的變數用兩個下劃線開頭。

規則2和規則3大家暫時不用理解,後面自然會明白的。當然,作為一個專業的程式設計師,給變數(事實上應該是所有的識別符號)命名時做到見名知意也非常重要。

變數的使用

下面通過例子來說明變數的型別和變數的使用。

"""
使用變數儲存資料並進行加減乘除運算

Version: 0.1
Author: 駱昊
"""
a = 45          # 變數a儲存了45
b = 12          # 變數b儲存了12
print(a + b)    # 57
print(a - b)    # 33
print(a * b)    # 540
print(a / b)    # 3.75

在Python中可以使用type函式對變數的型別進行檢查。程式設計中函式的概念跟數學上函式的概念基本一致,數學上的函式相信大家並不陌生,它包括了函式名、自變數和因變數。如果暫時不理解函式這個概念也不要緊,我們會在後續的內容中專門講解函式的定義和使用。

"""
使用type()檢查變數的型別

Version: 0.1
Author: 駱昊
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
print(type(a))    # <class 'int'>
print(type(b))    # <class 'float'>
print(type(c))    # <class 'str'>
print(type(d))    # <class 'bool'>

不同型別的變數可以相互轉換,這一點可以通過Python的內建函式來實現。

  • int():將一個數值或字串轉換成整數,可以指定進位制。
  • float():將一個字串轉換成浮點數。
  • str():將指定的物件轉換成字串形式,可以指定編碼。
  • chr():將整數轉換成該編碼對應的字串(一個字元)。
  • ord():將字串(一個字元)轉換成對應的編碼(整數)。

下面的例子為大家演示了Python中型別轉換的操作。

"""
Python中的型別轉換操作

Version: 0.1
Author: 駱昊
"""
a = 100
b = 12.345
c = 'hello, world'
d = True
# 整數轉成浮點數
print(float(a))    # 100.0
# 浮點型轉成字串 (輸出字串時不會看到引號喲)
print(str(b))      # 12.345
# 字串轉成布林型 (有內容的字串都會變成True)
print(bool(c))     # True
# 布林型轉成整數 (True會轉成1,False會轉成0)
print(int(d))      # 1
# 將整數變成對應的字元 (97剛好對應字元表中的字母a)
print(chr(97))     # a
# 將字元轉成整數 (Python中字元和字串表示法相同)
print(ord('a'))    # 97

總結

在Python程式中,我們可以使用變數來儲存資料變數有不同的型別變數可以做運算(下一課會有詳細的講解),也可以通過內建函式來轉換變數型別

今天太陽也東昇,而後西沉,早晨盛開的花兒也將凋謝;今天的太陽也西沉,而後東昇,陽光照射之處遍地花開,但卻已非昨日之花。