存儲
變量存在? 棧里面,對象存在??堆里面
系列解包賦值
a ,b = b 雷恃,a(進行變量值的替換)
運算
整除運算 ? // ? ? ?? 7//2=3
冪運算? ** ? ? 2**3=8
is判斷與==的區(qū)別
is 比較的是 地址指向是否一樣,,憾朴,
== 比較的是對象的值是否一樣
序列(list)
元組(tuple):與列表定義差不多,不過是用括號
???????? 1.不可變
?????????2.線程安全的
字典(dictionary):類似php里面的數(shù)組喷鸽,有key(不可變众雷,不重復(fù))
集合:無重復(fù)??????set(array):去重
異常處理
????1. try:?? (出現(xiàn)異常)跳轉(zhuǎn)到except?Exception?as?e:?????(將錯誤存儲到e中)????無論是否出錯都會執(zhí)行finally:????????
????2.主動拋出一個錯誤??????
class makeError(ValueError):#創(chuàng)建makeError類,繼承ValueError或者ExceptionError都行
??????? pass#什么都不做
def make_error(n):
????????if n==0:
??????????????? raise makeError("我是一個錯誤")#raise 彈出一個錯誤
??????? return(1/0)
make_error(0)
python 2.x中?用(u"在干嘛")識別中文
作用域:
?????????? 在循環(huán)或者判斷中定義的變量做祝,在外部依然可以使用
?????????? 在函數(shù)中定義的就不行
?????????? 變量全局申明??global?n
and和or
' nihao '? or? '?hello '? ='?nihao ?'
' nihao '?and ' hello ' ='?hello '
運用??
?????? or :?????????? if?b不存在時砾省,使用另一個數(shù)
?????????????????????? a=b or 1
??????and :??????? 當(dāng)b存在時,才對b操作
????????????????????? print(??b and int(b)?)?????????????可以簡化非空判斷操作
列表推導(dǎo)試
將1混槐,2编兄,3,4存入序列中
list1=[num for num in range(1,?? 5)]???? list1=[1,2,3,4]
加判斷声登,取小于3?的數(shù)
list1=[ num or num in range(1, 5)??if num <3 ]?? list1= [1,2]
統(tǒng)計字符串內(nèi)的各字符的個數(shù)
words='aplication' counts={letter:words.count(letter) for letter in words}
print(counts)?????????????????結(jié)果{'a': 2, 'p': 1, 'l': 1, 'i': 2, 'c': 1, 't': 1, 'o': 1, 'n': 1}
匿名函數(shù)
g= lambda a: a*a???????? g(2)
高級函數(shù)
????? map(function狠鸳,一個或多個序列)???function是一個參數(shù)的函數(shù)??在這里匿名函數(shù)可以使用
????? 取出序列的每個值進行function運算?????????
????? reduce(function,可迭代對象捌刮,可選)???function是兩個參數(shù)的函數(shù)
????? 取出可迭代對象里第1,2個數(shù)據(jù)進行function運算碰煌,再用結(jié)果與第3個數(shù)據(jù)進行function運算
python3無法直接使用reduce方法,需要寫:from?pythontools?import?reduce
類的實例绅作,可調(diào)用對象
對象中申明了 __call__(self , *args , **kwargs)???為可調(diào)用對象
蒙圈
class test(int): print("lalal") #執(zhí)行了一次
???????????? def __call__(self, n): #執(zhí)行了兩次
????????????????????????????? print(self)
??????????????????????????????print(n)
??????????????????????????????return test(self+n)
test(1)(2)(3)
返回結(jié)果? 6
淺拷貝與深拷貝
python?想要保存序列的副本芦圾,不能直接使用a=list(指向同一地址,類似指針俄认?)
要用copy方法
?????淺拷貝:只拷貝序列的第一層个少,第二層以及以上還是與拷貝序列指向同一地址
?????深拷貝:拷貝所有層洪乍,是一個新的序列
python 3?中,使用?深拷貝需要?import?copy
裝飾器
def deco(func):
????? ?def inner():
???????????? print('hello')
???????return func #return 什么函數(shù)名就執(zhí)行什么函數(shù)
@deco
def target():
???? ?print('i am target');
target()
字符串
字符串時不可變的
字符串可以通過? ’+‘? 拼接起來 形成一個新的對象
字符串復(fù)制 ?? str*3 ?? 結(jié)果:strstrstr
字符串支持反向搜索? str=‘a(chǎn)bcd’ ?? str[-1]=d ? ? ?
ste.replace()做字符串的替換 ? (本質(zhì)是創(chuàng)建新的對象)
切片slice(start:end:step)取從start 到end-1夜焦,步長為2壳澳,默認(rèn)值,start =0茫经,end=字符串結(jié)尾巷波,step=1 ? 小技巧,可以將步長設(shè)置為負卸伞,反向提取字符
str.split('s')以s分割字符str抹镊,默認(rèn)s為‘ ’
'*'.join(['s','e'])用*將列表里面的字符串拼接