1. 程式人生 > >小白學 Python(4):變數基礎操作

小白學 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