標籤:
1.Python基礎
2.基礎資料型別 (Elementary Data Type):str,dict,list,int
s="wzc" =>str
3.函數式編程
函數定義
內建函數
檔案處理
注意:
li=[11,22,33,44]def fi(arg): arg.append(55)fi(li)print(li)li=fi(li)print(li)
這裡需要說明的是,函數預設返回的是None,所以我們在使用的時候需要通過參數引用
4.其他
三元運算
lambda運算式
s="哈哈"bytes(s,encoding=utf-8)False:[],{},(),None,0,""
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef f1(): passprint(callable(f1))
中文說明:檢查對象object是否可調用。如果返回True,object仍然可能調用失敗;但如果返回False,調用對象ojbect絕對不會成功。
注意:類是可調用的,而類的執行個體實現了__call__()方法才可調用。
版本:該函數在python2.x版本中都可用。但是在python3.0版本中被移除,而在python3.2以後版本中被重新添加。
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=chr(65)print(a)b=ord("B")print(b)
可以找到ascii碼,也可以反向找出,數字轉化為字母,字母轉化為數字,這裡面需要依賴ascii碼的對應關係
產生隨機數
andom.randrange這就是隨機數位範圍.如果和chr相結合,就會有隨機字母了,但是需要注意,acsii是有範圍的,65-90就是大寫字母的範圍
這裡面的範圍,是1<=i<5的,所以在輸入的時候需要後面一個加一位
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcimport randomli=[]num=0for i in range(6): r=random.randrange(0,5) if r == 2 or r == 4: c=random.randrange(0,9) b=str(c) li.append(b) else: c=random.randrange(65,91) b=chr(c) li.append(b) num=0re="".join(li)print(re)
這種是產生數字和英文相結合的隨機驗證碼
1.讀取檔案內容open,str到記憶體
2.python,把字串=》編譯=》特殊代碼
3.執行代碼
Compile,就是用來編譯代碼的
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘print("123")‘#將字串編譯成Python代碼
r=compile(s,"string","exec")#這裡的exec和下面的沒有關係
print(r)exec(r)#執行Python代碼
Single:把上面的代碼,編譯成單行的Python程式
eval:編譯成運算式
exec:編譯成一模一樣的模式
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcr1=exec("7+8+9")
print(r1)
r2=eval("7+8+9")#Eval:通過這個功能,可以將字串,轉化為運算式,並且去執行以下
print(r2)
Exec:要比eval更牛逼,exec能執行所有Python代碼和字串,而eval只能執行運算式
但是eval比exec多一個功能就是,eval有傳回值,而exec沒有
快速查看對象提供了哪些功能
print(dir(list))
分頁功能
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcr=divmod(99,10)print(r)
分頁功能就是通過計算得到商,同時可以得到餘數。返回的是一個元祖
對象是類的執行個體
對象"wzc","www"他們的類就是"str"
對象[11,22,33],["w","z","c"]他們的類就是list
以此類推dict的類大家也就知道了
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzca=["a","b"]r=isinstance(a,list)print(r)
Isinstance,判斷對象是否是某個類的執行個體
這個和type 的區別,是isinstance是可以往上找,在基類裡面會用到,而type不可以
filter(函數,可迭代的對象)
列表,元祖,字典,都是可迭代的對象
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcli=[11,22,33,44,]def f1(arg): if arg > 22: return Trueret=filter(f1,li)print(list(ret))
在filter的內部,首先會去迴圈第二個參數,然後在每一次迴圈的內部執行第一個參數
#filter內部,迴圈第二個參數#result=[]#for item in 第二個參數# r=第一個參數(item)# if r:# result(item)#return result#filter迴圈函數第二個參數,讓每個迴圈元素執行函數,如果函數返回Ture,表示元素合法
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcli=[11,22,33,44,]def f1(arg): if arg > 22: return Trueret=filter(f1,li)print(list(ret))li=[11,22,33,44,]ret1=filter(lambda a:a>33,li)print(list(ret1))ret=map(lambda a:a+100,li)print(list(ret))
這樣就可以通過lambda運算式也可以實現相同的功能
map(函數,可迭代的對象(可以for迴圈的東西))
filter:函數返回Ture,並將元素添加到結果中
map:將函數傳回值添加到結果中
frozenset():不可變集合
globals():所有的全域變數
locals():所有的局部變數
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘wzcceqwediojdfiosjdjkfnjkwdhuiahjcnzkxcnx‘print(hash(s))
在儲存的時候,更多的是存一個hash值,其他語言也基本這樣
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs="哈哈"print(len(s))b=bytes(s,encoding="utf-8")print(len(b))
Python3是按照字元,Python2是按照位元組,python3即可以通過字元,也可以通過位元組來查看
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcs=‘{"k1":"v1"}‘#裡面必須是雙引號,單引號不行print(type(s),s)import jsonn=json.loads(s)#將一個字串轉換成Python基礎資料型別 (Elementary Data Type){},[]print(type(n),n)
要通過json轉換的話,裡面的元素必須用雙引號,單引號不行
Max():最大
Min():最小
Sum():求和
memoryview():和記憶體位址相關的一個類
object():一個類,所有類的副類
pow():求方,等同2**10==pow(2,10)
reverse():翻轉,list.reverse()==reverse(list)
round():四捨五入
slice():取間隔,s="12345",print([0:2:2])功能相同
sorted():排序,list.sort()=sorted(list)
需要掌握的內建函數
裝飾器:從外部裝飾一個函數
開放封閉原則
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzc# def f1():# print("F1")# def f2(xxx):# xxx()# f2(f1)def outer(func): def inter(*args, **kwargs): print("before") r=func(*args, **kwargs) print("after") return r return inter@outerdef f1(arg): print(arg) return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2): print(a1,a2)f2(11,12)
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef f1(): print("F1")def f2(xxx): xxx()f2(f1)
函數是可以當做參數來做調用的,這裡面的f1是執行的
def outer(func): def inter(): print("before") func() print("after") return inter@outerdef f1(): print("F1")f1()
@+函數
功能:
1、自動執行outer函數,並將其下面的函數名f1當做參數傳遞
2、將outer函數的傳回值重新賦值給f1
#!/usr/bin/env python# -*- coding: utf-8 -*-# Author:wzcdef outer(func): def inter(*args, **kwargs): print("before") r=func(*args, **kwargs) print("after") return r return inter@outerdef f1(arg): print(arg) return "haha"r=f1("heihei")print(r)print("#")@outerdef f2(a1,a2): print(a1,a2)f2(11,12)
當fi有參數的時候,裝飾器outer也需要跟著有參數才可以執行
當有多個參數的時候,就可以用**來處理
python整理-day4