面向?qū)ο螅?/p>
封裝,繼承,多態(tài),抽象
1、可變與不可變類型
可變類型:dict、list
不可變類型:int、tuple、string、
2、深拷貝與淺拷貝
直接賦值,對列表的引用,原列表改變被賦值對象也改變
淺拷貝:copy,沒有拷貝子對象,所以原始數(shù)據(jù)改變,子對象也會跟隨改變
深拷貝:copy.deepcopy,包含原對象中的子對象,原始數(shù)據(jù)改變,被賦值對象不變
3、斐波那契數(shù)列
a = 0
b = 1
while < 100:
? ? a, b = b, a+b
4、lambda函數(shù)
Python提供了很多函數(shù)式編程的特性,如:map、reduce、filter、sorted等這些函數(shù)都支持函數(shù)作為參數(shù),lambda函數(shù)就可以應用在函數(shù)式編程中。如下:
# 需求:將列表中的元素按照絕對值大小進行升序排列
list1=[3,5,-4,-1,0,-2,-6]
sorted(list1,key=lambdax:abs(x))
當然,也可以如下:
list1=[3,5,-4,-1,0,-2,-6]defget_abs(x):returnabs(x)sorted(list1,key=get_abs)
只不過這種方式的代碼看起來不夠Pythonic
5、python如何進行類型轉(zhuǎn)換
int(x [,base ])? ? ? ? 將x轉(zhuǎn)換為一個整數(shù)
long(x [,base ])? ? ? ? 將x轉(zhuǎn)換為一個長整數(shù)
float(x )? ? ? ? ? ? ? 將x轉(zhuǎn)換到一個浮點數(shù)
complex(real [,imag ])? 創(chuàng)建一個復數(shù)
str(x )? ? ? ? ? ? ? ? 將對象 x 轉(zhuǎn)換為字符串
repr(x )? ? ? ? ? ? ? ? 將對象 x 轉(zhuǎn)換為表達式字符串
eval(str )? ? ? ? ? ? ? 用來計算在字符串中的有效Python表達式,并返回一個對象
tuple(s )? ? ? ? ? ? ? 將序列 s 轉(zhuǎn)換為一個元組
list(s )? ? ? ? ? ? ? ? 將序列 s 轉(zhuǎn)換為一個列表
chr(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個字符
unichr(x )? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為Unicode字符
ord(x )? ? ? ? ? ? ? ? 將一個字符轉(zhuǎn)換為它的整數(shù)值
hex(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串
oct(x )? ? ? ? ? ? ? ? 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串
6、刪除列表中的重復原數(shù)
第一種:list(set(l))
第二種:
d = {}
for x in list:
d[x] = 1
mylist = list[d.keys()]
7、裝飾器
閉包函數(shù):1.函數(shù)內(nèi)部定義的函數(shù)。2.引用了外部變量但不是全局變量
裝飾器特點:
實質(zhì): 是一個函數(shù)
參數(shù):是你要裝飾的函數(shù)名(并非函數(shù)調(diào)用)
返回:是裝飾完的函數(shù)名(也非函數(shù)調(diào)用)
作用:為已經(jīng)存在的對象添加額外的功能
特點:不需要對對象做任何的代碼上的變動
import time
def decorator(func):
? ? def wrapper(*args, **kwargs):
? ? ? ? start_time = time.time()
? ? ? ? func()
? ? ? ? end_time = time.time()
? ? ? ? print(end_time - start_time)
? ? return wrapper
return decorator
@decorator
def func():
? ? time.sleep(0.8)
func() # 函數(shù)調(diào)用
8、貪婪 與非貪婪匹配
<.*>:貪婪匹配,從頭到尾匹配
<.*?>:非貪婪匹配,只匹配到第一個