記憶體管理,資料型別的基本使用與基本運算子(python2中與使用者互動)
1.CPython直譯器的垃圾回收機制
什麼是垃圾: 當一個值身上沒有繫結任何變數名(該值的引用計數=0)時,該值就是一個垃圾
引用計數增加
age=18 #18的引用計數等於1
x=age #18的引用計數等於2
引用計數減少
age=19 #18的引用計數等於1
del x #18的引用計數等於0
2.變數值的三個特徵:
id: 反映的是記憶體地址
type: 資料型別
age=18
print(id(age))
print(type(age))
print(age)
總結:
id相同,值一定相同
值相同,id可以不同
3. is 與 ==
== : 值是否相同
is : id是否相同
4. 可變與不可變型別
可變型別: 值改變,id不變,證明就是在改變原值
不可變型別: 值改變,id也變,證明根本不是在改變原值,是建立了新值,原值就是不可變型別
***************************************************************************************************************
1.python2中與使用者互動
在Python3中只有input
特點: 會使用者輸入的任意內容都存成str型別
2. 在python 中只有一個raw_input,與python3的input一模一樣
但要求使用者必須輸入一個明確的型別,輸入什麼型別就存成什麼型別
************************************************************************************************************
資料型別的基本使用
一: 數字型別
整型 int
作用: 用來記錄年齡,等級,各種號碼狀態
定義:
age=10 # age=int(10)
print(type(age))
使用:
print(age + 1)
print(age > 3)
2. 浮點型 float
作用: 用來記錄身高,體重,工資狀態
定義:
salary=3.1 #salary=float(3.1)
print(type(salary))
使用:
print(3.1 + 2.3)
print(3.1 > 2.3)
print(3.1 > 2)
print(3.1 + 2)
二: 字串型別 str
作用: 用來記錄描述性狀態,比如名字,性別
定義:在單引號('')、雙引號("")、三引號內(''' ''',""" """),包含一系列的字元
x='abc' # x=str('abc')
print(type(x))
y="abc"
z="""
abc xxxx
"""
print(type(x))
print(type(y))
print(type(z))
msg='my name is "egon"'
使用:
print('abc'+'def') # 僅限於str型別直接相加
print('abc'*10) # *的只能是數字
瞭解:ASCII表
x='abcdef'
y='z'
print(x > y)
print('a' > 'Z' )
print('a' > 10 )
三: 列表型別 list
作用: 用來記錄多個值,用索引對應值,索引反映的是位置
定義: 在[]內用逗號分隔開多個任意型別的值
l=[1,3.1,'xxx',['a','b','c']] #l=list(...)
print(type(l))
使用
print(l[0])
print(l[2])
print(l[3][0])
students_info=[
['egon',18,['play',]],
['alex',18,['play','sleep']] ]
print(students_info[1][2][0])
四 : 字典型別 dict
作用: 用來記錄多個值,用key對應value,其中key對value有描述性的功能
定義: 在{}內用逗號分隔開多元素,每一個元素都是key:value的形式,其中value可以是任意型別的值,而key通常應該是str型別
d={'x':1,'y':3.1,'z':['a','b'],'m':{'aaa':1111}} #d=dict(...)
print(type(d))
使用:
print(d['x'])
print(d['m']['aaa'])
print(d['z'][1])
五: 布林型別: True ,Flase
所有資料型別自帶布林值
布林值為假的資料型別: 0 ,空 , None
六: None
print(type(None))
***************************************************************************************************
基本運算子
一. 比較運算子
> >=
< <=
==
!=
瞭解
x=None
print(x==None) True
print(x is None) True
二: 邏輯運算子
and: 連線左右兩個條件,只有兩個條件同時成立時and運算的結果為True
or : 連線左右兩個條件,兩個條件成立任意一個or運算的結果為True
not: 取相反的意思