目錄
- 變數和資料型別
- 一、什么是變數,常量
- 二、變數的宣告
- 2.1 變數的宣告語法
- 2.2 變數的命名
- 三、變數的記憶體模型
- 四、什么是字面常量?
- 五、資料型別
- 5.1 整數(int)
- 5.2 浮點數(float)
- 5.3 字串(str)
- 5.4 布林值(bool)
- 六、測驗變數或常量的資料型別
- 6.1方式1: type(變數或常量)
- 6.2方式2:isinstance(變數或常量, 型別)
變數和資料型別
一、什么是變數,常量
思考:程式執行指的是什么?
對資料進行存盤處理和計算,最侄訓得結果,這是程式執行的本質,
變數的概念和在數學中的變數的概念一樣的,只是在計算機程式中,變數不僅可以是數字,還可以是任意資料型別,
例如:一個倉庫存有霍亮和霍晶兩人的金銀財寶,共10噸,已知霍晶的財寶是霍亮的4倍,問霍晶霍亮分別有多少財寶?
解: 設霍亮的財寶為X,則霍晶的就是4X
X+4X =10
X=2
變數的本質就是一小塊記憶體,在程式運行程序中用于存盤資料,并且資料可以改變
有些書籍把變數解釋為一個容器
常量:不會發生改變的
二、變數的宣告
2.1 變數的宣告語法
在 python 中變數的宣告與其他語言有顯著的差別,
如果是其他語言比如 java 中,則需要先宣告變數,然后賦值,
int a = 10; //Java 中的宣告變數和賦值
在 python 中,使用變數一定要先給變數賦值,不需要專門去宣告,如果是第一次賦值則會在記憶體中創建一個物件,如果不是第一次則會使用已經創建過的,
變數名 = 數值
變數名要見名知意,建議使用英文單詞(而不是沒有意義的字母),如果多個英文單詞使用下劃線鏈接,比如:student_name = "石鵬濤"
a = 10 # 第一次使用 a,所以會自動創建變數a,并把它的賦值為10
print(a) # 10
a = 20 # 第二次使用 a, 所以不會再創建變數 a,而是使用前面創建的變數 a,然后賦值為20
print(a) # 20
所以,python 中各種代碼相比其他語言就是精簡和優雅 爽
python 的同一個變數,可以先存盤數字,然后也可以再更改為其他型別,這是弱型別語言的典型特征,
a = 10 # 賦值為數字
print(a)
a = 'abc你好' #賦值為字串
print(a)
2.2 變數的命名
- 變數名必須是數字、字母(ascii 和 uncode 字符都可以,但是盡量避免使用中文)、下劃線_組成
- 不能數字開頭
- 如果有多個單詞組成,建議每個字母都用小寫字母,且不同的單詞用下劃線連接
合法:abc、a1、_hello、my_girl
不合法:1a、$a
三、變數的記憶體模型
? 雖然 python 的變數使用起來非常簡單,但是理解變數的記憶體模型也是非常重要的,
看下面的代碼:
a = "abc"
print(a)
b = a
b = "xyz"
print(a) # abc
print(b) # xyz
-
第1行代碼做了3件事情:
- 在記憶體中創建了一個字串
"abc" - 在內容創建了一個變數,變數名為
a - 字串
"abc"在記憶體中的地址賦值給變數a,即可以理解為變數a指向了字串"abc"
- 在記憶體中創建了一個字串

第3行代碼做了2件事情:
- 創建一個變數,變數名是
b - 把 變數
a的值賦給變數b,因為a中是存盤的字串"abc"的記憶體地址,則變數b存盤的也是字串"abc"的記憶體地址,即變數b也指向了字串"abc"

第5行代碼做了2件事情:
- 在記憶體中創建了一個字串
"xyz" - 字串
"xyz"在記憶體中的地址賦值給變數b,則b中的值被更換為字串"xyz"的記憶體地址,b與 字串"abc"則再無關系,

計算機要處理的資料各種各樣,每種資料的型別是不一樣的,比如有的是數字,有的是字串等,所以 python 把資料分成了多種型別,
但是有一點要注意:由于 python 是弱型別語言,變數存盤的值的型別并不固定,所以 不應該說變數的型別,而應該說變數的值的型別,
四、什么是字面常量?
一個字面常量(Literal Constants) 的例子是諸如5 、1.23 這樣的數字或 你好 、abc 這樣的文本,
這么稱呼這一變數是因為它們是 字面上的 --你用的就是它字面意義上的值或是內容,數 字 2 總是表示它本身而非其他含義--它是一個 常量,因為它的值不能被改變,
因此,所有的這些都被稱作字面常量,
- int(整數)
- float(浮點數)
- str(字串)
- bool(布爾)
五、資料型別

5.1 整數(int)
python 可以精確的處理任意長度的整數(也包括負整數),
a = 200000000000000000000000000000000000000000000000000000
print(a)
在計算機中經常用到2進制、8進制、10進制、16進制 型別的資料,python也支持這樣的字面量資料,
a = 100 # 十進制的100.
print(a)
b = 0b100 # 用 0b 開頭表示二進制資料
print(b)
c = 0o100 # 用 0o 開頭表示八進制資料
print(c)
d = 0x100 # 用 0x 開頭表示十六進制的資料
print(d)
輸出結果總是使用10進制形式:
100
4
64
256
5.2 浮點數(float)
? 計算機中的浮點數就是我們數學中的小數,
? 浮點數可以用數學寫法,如1.23,3.14,-9.01,等等,但是對于很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5等等,
注意:
? 整數和浮點數在計算機中的存盤方式是不一樣的,整數永遠可以精確的表示,而大部分的浮點數是近似表示,
5.3 字串(str)
? 在 python 中,用 一對雙引號 "" 或 一對單引號 '' 括起來的單個或多個字符就是字串 ,
? 有些字符沒有辦法直接寫在 單引號或者雙引號中,比如回車、換行、制表符等,這時候需要借助轉義字符來,
? \ 是轉義字符,(幾乎在所有的編程語言中都是它)
| 轉義字串 | 含義 |
|---|---|
| \n | 換行 |
| ' | 單引號 |
| " | 雙引號 |
| \ | \ |
| \t | 制表符 |
| \r | 回車 |
| \b | 退格(back) |
如果不想讓字串中的轉義字符起作用,則可以在字串前面添加 r 來表示. 這樣的字串我們稱之為原始字串(raw string)
a = r'abc\nx\tyz'
print(a)
print("------")
b = 'abc\nx\tyz'
print(b)

如果一個字串內有多行資料,又不想寫過多的 \n 則可以使用 3 對單引號或雙引號來表示,
a = '''hello
world
哈哈哈哈'''
print(a)
b = """hello
world
哈哈哈哈
"""
print(b)

在 python 中的字串是不可變的,
? 這意味著一旦你創造了一串字串,你就不能再改變它,盡管這看起來像是一件壞事,但實 際上并非如此,
5.4 布林值(bool)
? 布林值表示一種邏輯值,在 python 中只有 2 個字面量布林值 True 和 False ,
? 可以使用字面量布林值,也可以通過一定的計算得到布林值,
a = True
b = False
c = 3 > 4
print(a)
print(b)
print(c)

注意:bool 是int的子類,繼承自int
六、測驗變數或常量的資料型別
python 提供了兩個內置函式來判斷資料的型別
6.1方式1: type(變數或常量)
print(type(True))
a = 3
print(type(a))

如果想得到bool型的結果,則可以使用下面的方式
print(type(True) is bool)
a = 3
print(type(a) is int)
print(type(a) is float)

6.2方式2:isinstance(變數或常量, 型別)
print(isinstance(3, int))
a = True
print(isinstance(a, str))
b = 2.2
print(isinstance(b, float))

isinstance()還可以針對一個資料,同時判斷多種資料型別,只要有一個滿足就回傳True
print(isinstance(3, (float, int, str))) # True
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/162021.html
標籤:Python
上一篇:Python第一章-編碼規范
