1. 程式人生 > >內存管理以及數據類型

內存管理以及數據類型

地址 ase 以及 內存管理 逗號 ror 變量名 用戶輸入 用戶交互

一.內存管理

1.Cpython解釋器的垃圾回收機制

什麽是垃圾:當一個值身上沒有人綁定任何變量名(該值的引用計數=0)時,該值就是一個垃圾。 Cpython解釋器就會自動回收這樣的垃圾。

#引用計數增加

#age=18 # 18的引用計數=1

#x=age # 18的引用計數=2

#引用計數減少

#age=19 # 18的引用計數=1

#del x # 18的引用計數=0

2.變量值的三個特征:

id:反映的內存地址 # age=18

type::數據類型 # print(id(age))

值:數據 # orint(age)

總結:id相同,值一定相同;值相同,id可以不同。

例:x=‘my name is wangke‘

y=‘my name is wangke‘

print(id(x),id(y))

# 40702000 40702216

3. is 與 ==

==:值是否相等

is :id是否相等

4.可變類型與不可變類型

不可變類型:值改變,id也變,證明根本不是在改變原值,是創建了新值,原值就是不可變類型

例:x=10

print(id(x))

x=11

print(id(y))

# 1435266816

1435266848

可變類型:值改變,id不變,證明就是在改變原值,原值是可變類型

例:l=[‘a‘,‘b‘,‘c‘]

print(id(l))

l[0]=‘A‘

print(id(l))

# 35398664

35398664

二.python2中與用戶交互

1.在python3中只有一個input:

特點:會把用戶輸入的任意內容都存成str類型

2.在python2中只有一個raw_input,與python3中的input一模一樣,而python2中的input要求用戶必須輸入一個明確的類型,輸入什麽類型就存成什麽類型

三.數據類型的基本使用

1.整型int

作用:用來記錄等級、年齡、好號碼等狀態

定義:age=10 # age=int(10)

使用:

print(age+1)

print(age>3)

2.浮點型float

作用:用來記錄身高、體重、工資等狀態

定義:salary=3.5 # salary=float(3.5)

使用:

print(3.1+3.4)

print(3.1<3.4)

print(3.1>2)

3.字符串類型str

作用:用來記錄描述性質狀態,比如名字、性別

定義:在單引號(‘ ‘),雙引號(“ ”),三引號(‘ ‘ ‘ ‘ ‘ ‘ ," " " " " ")內包含一系列的字符

使用:print(‘abc‘+‘def‘) # 僅限字符串相加

print(‘abc‘*10) # 相乘的只能是數字

4.列表類型list

作用:用來記錄多個值,用索引對應值,索引反映位置

定義:在[ ]內用逗號分隔開多個任意類型的值

l=[1,3.1,‘xxx‘,[‘a‘,‘b‘,‘c‘]] # l=list(...)

使用:# print(l[0])

# print(l[3][0])

5.字典類型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])

列表與字典的應用:在多個值是同種類型的時候用列表,在多個值是不同種類型的時候用字典。

6.布爾類型:True,Flase

所有數據類型都自帶布爾值

布爾值為假的數據類型:0,None,空

7. None

# print(type(None))

四.基本運算符

1.比較運算符
> >=
< <=
==
!=
print(10 != 11)

# l1=[‘abc‘,1,[‘a‘,‘b‘,‘c‘]]

# l2=[‘abc‘,‘aa‘,]

# print(l2 > l1)

2. 邏輯運算符
and:連接左右兩個條件,只有兩個條件同時成立時and運算的結果為True
print(10 > 9 and 3 > 2 and ‘egon‘ == ‘egon‘ and True)

or:連接左右兩個條件,兩個條件成立任意一個or運算的結果就為True
print(False or False or True or False or 3 > 10)

res=(True or (False and True)) or ((False or True) and False)
res=(True or False) or (True and False)
res=True or False
print(res)

not:
print(not 10 > 3)

x=None
print(x is not None)

# age1=18
# age2=19
# print(age2 is not age1)

練習:
name_bk=‘egon‘
pwd_bak=‘123‘
name=input(‘please input your name: ‘)
pwd=input(‘please input your password: ‘)
if name == name_bk and pwd == pwd_bak:
print(‘login successfull‘)
else:
print(‘username or password error‘)

內存管理以及數據類型