日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python成长之路——第四天

發(fā)布時間:2025/6/17 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python成长之路——第四天 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
內(nèi)置函數(shù): callable:查看對象是否能被調(diào)用(對象是函數(shù)的話能被調(diào)用) #callable def f1(): pass f2="a" print(callable(f1)) print(callable(f2)) 

#chr() 將ascii碼轉(zhuǎn)換成對應(yīng)的字符

#ord() 相反

print(chr(65)) print(ord("B")) 生成一個6位的隨機驗證碼: #!/usr/bin/env python # -*- coding:utf-8 -*-import random li=[] for i in range(6):r=random.randrange(0,5) if r == 2:temp=random.randrange(0,10)li.append(str(temp)) #注意:join方法要求列表里的每個元素必須是字符串 elif r == 4:temp=random.randrange(97,123)k=chr(temp)li.append(k) else:temp=random.randrange(65,91)k=chr(temp)li.append(k) print("".join(li)) V67Dj2A compile() ?將字符串,編譯成python代碼 exec() ? 執(zhí)行 ? 比eval功能更強大,直接執(zhí)行python代碼或者字符串(如果接收的是字符串的話,內(nèi)部會執(zhí)行compile),沒有返回值 eval() ? ?執(zhí)行 ? 主要是用來執(zhí)行表達(dá)式的,有返回值 python解釋器執(zhí)行文件要經(jīng)過以下幾個步驟: 1.讀取文件內(nèi)容到內(nèi)存 ?open—str到內(nèi)存open完成 2.python解釋器把 ?字符串—》編譯—》特殊代碼 ? compile完成 3.執(zhí)行代碼exec完成 編譯模式: single:編譯成單行的python程序 eval:編譯成表達(dá)式 exec:編譯成和python代碼一模一樣的東西 with open("zy.py","r",encoding="utf8") as f: r = compile(f.read(),"<string>","exec") exec(r) BBDfji zy.py是上面的6位隨機驗證碼程序,這個就模擬了python解釋器的執(zhí)行過程 s = "print(123)" r = compile(s,"<string>","exec") print(r) print(type(r)) exec(r) <code?object?<module>?at?0x0000000000802DB0,?file?"<string>",?line?1> <class?'code'> 123 s = ''' print(123) print(456) ''' r = compile(s,"<string>","single") exec(r) Traceback?(most?recent?call?last): File?"C:/Users/Administrator/PycharmProjects/untitled/day4.py",?line?14,?in?<module> r?=?compile(s,"<string>","single") File?"<string>",?line?2 print(123) ^ SyntaxError:?multiple?statements?found?while?compiling?a?single?statement s = ''' print(123) print(456) ''' r = compile(s,"<string>","exec") exec(r) 123 456 print(eval("2+3")) a="[1,2,3,4]" li=eval(a) print(type(li)) b='{"k1":"v1","k2":"v2"}' dic=eval(b) print(type(dic)) 5 <class 'list'> <class 'dict'> delattr,getattr,setattr,hasattr ?反射 ?以后講 dir() ?快速查看一個對象提供什么功能,不顯示功能詳細(xì) help() ?顯示功能詳細(xì) ?? divmod() ? #divmod() 得到商和余數(shù),返回值是元組 #共97 每頁顯示10 總共多少頁 print(divmod(97,10)) n1, n2 = divmod(97,10) print("n1",n1) print("n2",n2) (9,?7) n1?9 n2?7 對象是類的實例 則True isinstance() ? #isinstance() 判斷對象是否是某個類的實例 s="alex" r=isinstance(s,list) print(r) False filter(函數(shù),可迭代的對象) def f1(a): if a>22: return Trueli=[11,22,33,44,55] ret = filter(f1,li) print(ret) print(list(ret)) <filter?object?at?0x0000000001142198> [33,?44,?55] filter和lambda組合: li=[11,22,33,44,55] ret = filter(lambda a: a > 33,li) print(list(ret)) [44,?55] map(函數(shù),可迭代對象),對可迭代對象的每個元素都進(jìn)行處理 li=[11,22,33,44,55] def f(a): return a+100 ret = map(f,li) print(ret) print(list(ret)) <map?object?at?0x0000000000B82128> [111,?122,?133,?144,?155] li=[11,22,33,44,55] ret = map(lambda a: a+100 , li) print(ret) print(list(ret)) <map?object?at?0x00000000011C2128> [111,?122,?133,?144,?155] filter:函數(shù)返回True 則元素添加到結(jié)果中 map: 將函數(shù)返回值添加到結(jié)果中 NAME = "alex" def show():a=123 print(globals()) print(locals()) show() {'__package__':?None,?'__loader__':?<_frozen_importlib_external.SourceFileLoader?object?at?0x0000000000A05BA8>,?'__builtins__':?<module?'builtins'?(built-in)>,?'show':?<function?show?at?0x0000000001169C80>,?'__cached__':?None,?'__name__':?'__main__',?'__doc__':?None,?'__spec__':?None,?'__file__':?'C:/Users/Administrator/PycharmProjects/untitled/day4.py',?'NAME':?'alex'} {'a':?123} 如果一個字符串是字典或者列表等形式的,一定是單引號在外邊,雙引號在里面 裝飾器: @ + 函數(shù)名 功能: 1.自動執(zhí)行outer函數(shù)并且將其下面的函數(shù)名f1當(dāng)作參數(shù)傳遞 2.將outer函數(shù)的返回值,重復(fù)賦值給f1 詳細(xì)過程: 1. 將outer函數(shù)加載入內(nèi)存 2. 執(zhí)行@outer ?將函數(shù)名f1傳給func(func=原f1),執(zhí)行outer 3. 將inner函數(shù)加載入內(nèi)存 4. 將outer函數(shù)的返回值inner,重新賦值給f1,(f1=inner) 5. 當(dāng)調(diào)用f1時,就執(zhí)行inner(),inner中的func=原f1 適用場景: 主要是權(quán)限控制 def outer(func): def inner(*args,**kwargs): print("before")ret = func(*args,**kwargs) print("after") return ret return inner@outer def f1(aa): print("F1") return aa @outer def f2(*args,**kwargs): print("F2") for index,items in enumerate(args): print(index,"-"*5,items) for k in kwargs: print(k,"-"*5,kwargs[k]) f2(1,2,3,a=1,b=2,c=3) before F2 0?-----?1 1?-----?2 2?-----?3 b?-----?2 c?-----?3 a?-----?1 after

?

轉(zhuǎn)載于:https://www.cnblogs.com/meitangyanyan/p/5132919.html

總結(jié)

以上是生活随笔為你收集整理的python成长之路——第四天的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。