菜鳥學Python第三天
記憶體管理
C python直譯器的垃圾回收機制
-
什麼是垃圾: 當一個值身上沒有繫結任何變數名(該值得引用計數=0)時,該值就是一個垃圾。
引用計數增加
# age=18 # 18的引用計數等於1
# x=age # 18的引用計數等於2引用計數減少("del x"解除變數名和值的繫結,減少計數,然後由Python機制回收)
變數值的三個特徵
-
id : 反映的是記憶體地址
-
type : 資料型別
-
值 : 值本身
總結:
-
id相同,值一定相同
-
值相同,id可以不同
-
is 與 ==的區別
-
== :值是否相等
-
is : id是否相等
-
可變型別和不可變型別:判斷可不可變,主要是判斷id是否改變。
-
可變型別:值改變,id不可變
-
不可變型別:值改變,id也變,證明根本不是在改變原值,是建立了新值,原值就是不可變型別。
-
Python 2中與使用者互動(瞭解)
-
-
在Python 3中只有一個input
特點:會將使用者輸入的任意型別都存成str型別
-
在Python 2中只有一個raw_input,與Python 3的input一模一樣
x = raw_input('>>>:')
python 2 中的 input 要求使用者輸入明確的型別,輸入什麼型別就存為什麼型別。
>>> x = input('x:') x:123 >>> x 123 >>> type(x) <type 'int'>
-
資料型別的基本使用
1. 整型:int
-
作用:用來記錄年齡、等級、各種號碼狀態
-
定義:
age = 10
-
使用:略
2.浮點型:float
-
作用:用來記錄身高,體重、工資狀態
-
定義:
height = 1.83
-
使用:略
3.字串:str
-
作用:用來記錄描述性質狀態,比如名字、性別等。
-
定義:在單引號('')、雙引號(" ")、三引號(''' ''', """ """)內包含一系列字元。
-
三種不同引號的區別:
-
-
單引號和雙引號基本無區別,都是用來存放單個字串,但要注意的是要保證前後的一致性
-
三引號多用來存放多行字串
-
字串的巢狀時,要保證內外引號的差異性,否則就會報錯
-
-
-
x = 'abc' # 等同於x = "abc" y = """ abc 123 hahaha """ msg = 'my name is "Jason"'
-
使用:
-
字串的加法運算(僅限於字元串同型別相加)
-
字串的乘法(相乘的物件必須是int型別)
-
字串之間的大小比較
-
4.列表:list
作用:用來存取多個值,用索引對應值,索引反映的是位置
定義:在[]內用逗號分隔開多個任意型別的值
>>> l = [1, 0.1, 'Jason', ['a', 'b', 'c']] >>> print(type(l)) <type'list'>
使用:列表的取值及巢狀取值
5.字典:dict
作用:用來存放多個值,用key對應value,其中key對value有描述性作用
定義:在{}內,用逗號分隔開多個元素,每一個元素都是key:value的形式,其中value可以是任意型別,而key通常是字串型別。
>>> s = {'name':'Jason','age':'23','hobby':'basketball'}
用法:按照key取value
>>> s = {'name':'Jason','age':'23','hobby':'basketball'} >>> print(s['age']) 23
6.布林型別:bool
作用:用來控制程式的走向
定義:布林型別只有兩種,True/false;
與之前的型別不同,基本不需要提前定義。
用法:通常用在迴圈或判斷語句中,控制程式流程的走向
所有資料型別自帶布林值,除0,None,空(任何為空的資料型別)的布林型別為False外,其他資料型別的布林值皆為True。
>>> print(type(None)) <class 'NoneType'>
基本運算子
1. 比較運算子
比較運算子包含:">", ">=", "<", "<=", "==", "!="
用法:通常用於迴圈或判斷語句中,輸出值為布林型別。
2. 邏輯運算子
-
and:連線左右兩個條件,只有在兩個條件同時成立時,輸出結果才為真
-
or:連線左右兩個條件,只要有其中一個條件成立時,輸出結果就位真
-
not:非
注:當統一語句中存在兩個以上條件時,用括號標明優先順序可增加程式碼可讀性