本文來自異想之旅公開發布的Python教程,原文地址:https://www.yuque.com/yxzl/python
這節課內容比較多,但是極為重要,請仔細閱讀!
我們再來了解一個新概念:變量。
a = 1
print(a)
a = 2
a = 3
print(a)
輸出內容:
1
3
名詞解釋:變量,百度百科解釋為計算機語言中能儲存計算結果或能表示值的抽象概念。我們可以簡單理解為存儲一些數據的容器。
變量具有變量名和值。形如 a = 1
這樣的語句成為變量賦值,即將 1
這個值存入 a
變量中。編程語言中的賦值基本都是從右到左,即右邊的值給左邊。
針對有其它編程語言基礎者:與其它編程語言不同,Python 中變量無需提前聲明,在使用時直接賦值即可。
在執行變量賦值的時候,有如下兩種情況:
a = 1
),則會創建變量 a 並將 a 的值設定為 1;a = 2
和 a = 3
),則直接重新設定 a 的值。a = 1
name = 2
Cnt = 3
x1 = 4
_temp = 5
string_len = 6
HELLO = 7
異想之旅 = 8
print(a, name, Cnt, x1, _temp, string_len, HELLO, 異想之旅)
輸出內容:
1 2 3 4 5 6 7 8
根據本例,變量名命名要求如下:
A-Z
、小寫字母 a-z
、數字 0-9
、下劃線 _
組成;異想之旅
,但是非英文的變量命名極其不推薦使用;對於一些老舊的習題,可能會認為 Python 的變量名只能包含字母數字下劃線。
以上是對於變量名的硬性限制,還有很多為了加強代碼可讀性的約定,Python 官方的變量命名建議(還包括其它內容的代碼格式)是 PEP 8 - Python 代碼風格指南。
a = 1 # 整數int
b = 3.1415926 # 小數(浮點數)float
c = 'HelloWorld' # 字符串str
d = True # 波爾類型(包含True和False兩個值)bool
print(a, b, c, d)
輸出內容:
1 3.1415926 HelloWorld True
本例中,我們介紹了 Python 中四種常用的數據類型:
int
:存儲任意整數,例如 1
-10
float
:存儲任意小數,例如 0.1
-3.1415926
.98(等同於0.98)
**str**
:存儲任意字符組成的內容,例如 "Hello World"
'異想之旅'
"π=3.1415926..."
(全部都必須要有單引號或雙引號包裹)。在 1.5 章節我會詳細介紹這一數據類型的使用bool
:表示邏輯判斷,取值為 True
或 False
,分別對應二進制下的 1 和 0。在 1.8 章節中大家會了解到該類型的使用場景None
:有且只有None
這一個取值,通常用於表示內容不存在或為空。先做了解,後面會用到名詞解釋:字符串,百度百科解釋為編程語言中表示任意文本的數據類型。
針對有其它編程語言基礎者:與其它編程語言不同,Python 的 int 類型不限制數字的大小和位數,運算時自動采用高精度;Python 不存在單個字符(char)的概念,因此單引號和雙引號都表示字符串。
思考一個問題:為什麼字符串一定要在兩邊加引號呢?
參考答案:因為如果不加以引號進行區分,將無法將字符串與變量名和函數名進行區分,進而無法讓計算機識別你是在書寫一個字符串還是在訪問變量。
延申:為什麼數字和變量可以區分開?
參考答案:因為變量名不能以數字開頭。
a = 19.97
print(int(a))
print(str(a))
print(bool(a))
輸出內容:
19
19.97
True
眾所周知,水可以在一定條件下自如地在固液氣三態中切換。在 Python 中,數據的類型也不是一成不變的,可以通過類型轉換使其轉變為另一類型類型。水的狀態轉變前提是溫度變化,而類型轉換的觸發條件則是調用類型轉換函數。
針對有編程基礎者:嚴格來講,
int``str
等並非函數,而是類的初始化語句,具體將在後文提到。
名詞解釋:類型轉換,維基百科解釋為將數據從一種類型轉換到另一種類型的過程。一個簡單的例子是將整數轉換成浮點數。
名詞解釋:類型轉換函數,通常為
type_name()
,其中type_name
為目標類型的縮寫。縮寫在本節的 例 03 中都已經標注出來(這是需要記住的,本節往後提及數據類型將只標注英文縮寫)。
在本例中,我們通過 int()
str()
bool()
三個函數分別將浮點型 float 的變量 a 轉換為了整型 int、字符串 str 和波爾型 bool。
強制類型轉換的規則大體如下:
1
→ '1'
intfloat在 int 末尾加上 .0 占位:1
→ 1.0
intbool除 0 外均返回 True(0 返回 False):1
→ True
floatint捨棄 float 的小數部分(非四捨五入):19.97
→ 19
floatstr將 float 在十進制下使用阿拉伯數字表示:3.14
→ '3.14'
floatbool除 0 外均返回 True(0 返回 False):1
→ True
strint將 str 轉換為可供運算的 int 格式:'1'
→ 1
strfloat將 str 轉換為可供運算的 float 格式:'1.23'
→ 1.23
strbool除空串 ''
為 False 外,全部返回 True:' '
→ True
(空串是長度為 0 的字符串,不是空格)boolintTrue
→ 1
False
→ 0
|
| bool | float | True
→ 1.0
False
→ 0.0
|
| bool | str | True
→ 'True'
False
→ 'False'
|
特別說明:將 str 轉換為 int 或 float 時,該 str 必須是可以由 int 或 float 通過 str()
轉換得到的,否則拋出錯誤:若想要將 '1.23'
轉換為 int,則寫法為 int(float('1.23'))
,因為 '1.23'
無法通過 int 類型直接轉換 str 得到,所以不能直接轉 int。
a = 1
print(a)
del a
print(a)
輸出內容:
1
Traceback (most recent call last):
File "e:\Programming\Python\臨時\1.py", line 4, in <module>
print(a)
NameError: name 'a' is not defined
del
語句可用於刪除一切以定義的變量。
上面輸出的第 2 行開始為報錯語句,後面也會詳細提及,現在簡單說一下怎麼看它:重點內容在最後一行,直接作為英文去讀;再往上是報錯堆棧信息,會告訴你出錯的語句是哪一句,比如這裡是文件 e:\Programming\Python\臨時\1.py
的第四行,如果是函數內部出錯,這裡將完整打印函數的調用過程。