4.變數及基本資料型別
1.變數
1.1什麼是變數
變數就是可以變化的量,量指的是事物的變化狀態,比如人的年齡、性別,遊戲角色的等級、金錢等等
1.2為什麼要有變數
為了讓計算機能夠像人一樣去記憶事物的某種狀態,並且狀態是可以發生變化的
詳細地說:
程式執行的本質就是一系列狀態的拜年話,變是程式執行的直接體現,所以我們需要有一種機制能夠反應或者說儲存下來程式執行的狀態,以及狀態的變化
1.3如何用變數
1.3.1變數的基本使用
原則:先定義,後使用
name = 'egon' #定義
print(name) #引用
1.3.2記憶體管理:垃圾回收機制
垃圾:當一個變數值被繫結的變數名的個數為0時,該變數無法被訪問到,稱之為垃圾
-
引用計數增加
x = 10 #10的引用計數為1 y = x #10的引用計數為2 z = x #10的引用計數為3
-
引用計數減少
del x #解除變數名x與10的繫結關係,10的引用計數變為2 del y #解除變數名x與10的繫結關係,10的引用計數變為1 z = 12345
1.3.3變數的三大組成部分
- 變數名:是指向等號右側值的記憶體地址的,用來訪問等號右側的值
- 賦值符號:將變數值的記憶體地址繫結給變數名
- 變數值:代表記錄的事物的狀態
1.3.4變數名
原則:變數名的命名應該見名知意
-
變數名只能是字母、數字或下劃線的任意組合
-
變數名的第一個字元不能是數字
-
關鍵字不能宣告為變數,常用關鍵字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
ps:不要使用拼音,不要用中文,在見名知意的前提下儘可能短
1.3.5變數名的命名風格
-
純小寫加下劃線的方式(在python中,關於變數名的命名推薦使用這種方式)
age_of_alex = 73 print(age_of_alex)
-
駝峰體
AgeOfAlex=73 print(AgeOfAlex)
1.3.6變數值的三個重要特徵
name = 'egon'
-
id:反應的是變數值的記憶體地址,記憶體地址不同id不同
print(id(name))
-
type:不同型別的值用來表示記錄不同的狀態
print(type(name))
-
value:值本身
-
is與==
- is:比較左右兩個值的id是否相等
- ==:比較左右兩個值他們是否相等
>>> x = 'info:Egon: 18' >>> y = 'info:Egon: 18' >>> print(x,y) ('info:Egon: 18', 'info:Egon: 18') >>> x == y True >>> x is y False #python直譯器執行結果為上,pycharm中執行存在優化機制結果不一致
總結:id不同的情況下,值有可能相同,即兩塊不同的記憶體空間裡可以存放相同的值
id相同的情況下,值一定相同
-
小整數池[-5,256]:
- 從python直譯器啟動那一刻開始,就會在記憶體中事先申請好一系列記憶體空間存放好常用的整數
- pycharm記憶體優化擴大了這個整數池,實際上還是值相等的情況下id可能不同
1.3.7常量:不變的量
注意:python語法中沒有常量的概念,但是在程式的開發過程中會涉及到常量的概念
AGE_OF_ALEX = 73 # 小寫字母全為大寫代表常量,這是一種約定、規範
2.基本資料型別
2.1數字型別
-
整形int
-
作用:記錄年齡、個數等等
-
定義:
age = 18 print(type(age))
-
-
浮點型float
-
作用:薪資、身高、體重
-
定義:
salary = 3.3 height = 1.87 weight = 70.3 print(type(height))
-
-
數字型別的其他使用
- int和float之間可以相加
2.2字串型別str
字串:
-
作用:記錄描述性質的狀態,名字、一段話
-
定義:用引號(''," ",''' ''',""" """)包含的一串字元
xxx # 代表訪問變數名字
'xxx' # 代表的是值
-
字串的巢狀:
-
外層用單引號,內層用雙引號,反之亦然
-
或用\轉義
#列印 my name is 'egon' 的兩種方式 print("my name is 'egon'") print('my name is \'egon\'')
-
-
字串之間可以相加,但僅限於str和str之間進行,代表拼接,不推薦使用,因為str之間效率極低
-
字串可以和整數相乘
2.3列表:索引對應值,索引從0開始,0代表第一個
-
作用:按照位置記錄多個值,並且可以按照索引取指定位置的值,索引反映的是順序、位置,對值沒有描述性的功能
-
定義:在[]內用逗號分隔開多個任意型別的值,一個值稱之為一個元素
l = [10,3.1,'aaa',['bbb','ccc'],'ddd'] print(l) print(l[1]) print(l[2]) print(l[3][1]) print(l[4]) print(l[-1])
2.4字典:key對應值,其中key通常為字串型別,所以key對值可以有描述性
- 作用:用來存多個值,每個值都有唯一一個key與其對應,key對值有描述功能
- 定義:在{}內用逗號分隔開多個key:value
d = {'a':1,'b':2}
print(d['a'])
-
list與dict
-
相同點:都能存多個值,稱之為容器型別
-
不同點:
①list使用索引對應值,索引反映的是位置/順序
②dict是key對應值,其中key通常為字串型別,而str具有描述性功能,所以key對值可以有描述性功能
-
2.5布林bool
-
作用:記錄真假
-
定義:
True 真 False 假
知識點:
1.什麼是變數?為何要有變數?
2.變數的三大組成部分是?每部分的作用是什麼?
3.變數名的命名原則、規範、風格
4.變數值的三個特徵是什麼?
5.is與==的區別
6.id相同值是否可以相同?
7.id不同值是否可以相同?
8.用變數的定義說明int、float、str、list、dict、bool型別用於記錄何種狀態,每種型別至少寫出三種示例