小白學 Python(4):變數基礎操作
人生苦短,我選Python
引言
前文傳送門
小白學 Python(1):開篇
小白學 Python(2):基礎資料型別(上)
小白學 Python(3):基礎資料型別(下)
前面的文章中,我們介紹了基礎資料型別中最常用的數字和字串,不知道大家還記得什麼是變數不?不記得變數也應該記得那被奶茶吧~~~都不記得自己去翻翻前面的文章吧。
變數
在 Python 中使用變數,有一個和 Java 最大的不同是無需先宣告,直接在賦值的時候就完成了宣告。
如果我們直接使用一個沒有賦值的變數,會直接報錯。
print(name) // 輸出結果: Traceback (most recent call last): File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module> print(name) NameError: name 'name' is not defined
錯誤資訊是說我們的 name
變數未定義,如果我們先對 name
賦值,這個變數就被定義了。
name = "小明"
print(name)
// 輸出結果:
小明
如果我們對這個變數再次進行賦值,新的賦值將會覆蓋之前的賦值。
name = "小紅"
print(name)
// 輸出結果:
小紅
當然,如果我們不再需要這個變數,也可以通過 Python 提供的 del 來刪除這個變數。
del name print(name) // 輸出結果: Traceback (most recent call last): File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module> print(name) NameError: name 'name' is not defined
每個變數在我們的程式當中都會佔有一定的記憶體空間,那麼記憶體空間不夠大的時候再新建變數豈不是要記憶體溢位?理論上來講是會出現這種情況,但是 Python 提供了自動辣雞回收機制,我們不用的辣雞變數, Python 是會幫我們自己動回收掉的。
但是,在極端情況下,我們所有需要使用的變數超出當前的記憶體空間怎麼辦?emmmmmmm
這個就需要用錢來解決了,加點記憶體它不香麼。
變數型別轉換
在某些情況下,我們的變數需要參加運算,如果變數型別不同會怎麼樣呢?
如果我們要使用一個字串加上一個整形會怎麼樣呢?
print('123' + 123) // 輸出結果: Traceback (most recent call last): File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 17, in <module> print('123' + 123) TypeError: can only concatenate str (not "int") to str
這句報錯含義是告訴我們字串只能連線一個字串,並不能連線一個整形。
這裡我們先寫的是字串,系統預設是做字串連線操作,但是系統執行到後面發現並不是一個字串,系統直接就原地炸了:說好的字串呢?
這時如果我們想要正常執行怎麼辦呢?
如果僅僅只是要程式不報錯,有兩種解決方案:
- 將字串強成整形,結果會是一個整形
- 將整形轉成字串,執行字串拼接操作
當然,這裡涉及到了型別強制轉換。
float() 函式,將其他型別資料轉為浮點數
str() 函式,將其他型別資料轉為字串
int() 函式,將其他型別資料轉為整型
那麼上面的報錯我們就有了以下解決方案:
print('123' + str(123))
// 輸出結果:
123123
print(int('123') + 123)
// 輸出結果:
246
那麼新的問題來了,如果是一個整形和一個浮點數想加最終會得到什麼型別呢?
這裡涉及到了一個新的知識點,叫做型別提升
print(123.5 + 123)
// 輸出結果:
246.5
那麼如果一個浮點型強轉成整形又會怎麼樣呢?
print(int(123.7))
// 輸出結果:
123
從示例中,可以看出強制型別降級時,會直接抹去末尾小數,這裡並不會做四捨五入哦~~~
如果想使用四捨五入的方式,有一種比較簡易的方式,加 0.5 ,如下示例:
print(int(123.7 + 0.5))
// 輸出結果:
124
這麼寫有點不是那麼優雅,我們還可以藉助函式 round() 來實現。
print(int(round(123.4)))
// 輸出結果:
123
print(int(round(123.5)))
// 輸出結果:
124
示例程式碼
本系列的所有程式碼小編都會放在程式碼管理倉庫 Github 和 Gitee 上,方便大家取用。
示例程式碼-Github
示例程式碼-Gi