摘要:本次分享講簡單聊聊函數(shù)的用法,希望能給讀者一點啟示和參考。在最后的語句中,我們給出了的值,并且值重復(fù),函數(shù)接收后面一個值,且值傳遞不起作用,因此輸出結(jié)果為本次分享到此結(jié)束。本文介紹了幾個函數(shù)使用的例子,希望能拋磚引玉,也歡迎大家多多交流
??在Python中,exec()是一個十分有趣且實用的內(nèi)置函數(shù),不同于eval()函數(shù)只能執(zhí)行計算數(shù)學(xué)表達式的結(jié)果的功能,exec()能夠動態(tài)地執(zhí)行復(fù)雜的Python代碼,能夠十分強大。具體的介紹可以參考官方文檔: https://docs.python.org/3/lib... 。
??本次分享講簡單聊聊exec()函數(shù)的用法,希望能給讀者一點啟示和參考。
??首先是一個簡單的小例子,代碼如下:
i = 12 j = 13 exec("answer=i*j") print("Answer is %s"%answer)
該代碼的輸出結(jié)果為:
Answer is 156
這表明第三句的exec()函數(shù)能夠正確地執(zhí)行Python代碼,并且能將計算結(jié)果賦予answer變量,就像真正的Python代碼一樣。
??那么,我們能不能讓exec()函數(shù)執(zhí)行一個復(fù)雜的Python代碼呢?Why not?請看一下例子:
func = "def fact(n): return 1 if n==1 else n*fact(n-1)" exec(func) a = fact(5) print(a)
func為字符串,它是一個遞歸地計算整數(shù)階乘的函數(shù)。因為exec()僅支持string和code object參數(shù),所以我們要將該遞歸函數(shù)轉(zhuǎn)化成一個字符串,當然,格式還是要Python代碼的格式來,注意換行和縮進。剛才例子的輸出結(jié)果為:
120
??可能有些讀者納了悶了,這些代碼不是直接能夠在Python中執(zhí)行嗎,為何還要多此一舉地把它寫成字符串,并用exec()執(zhí)行呢?筆者的答案是,剛才的例子只是為了演示exec()函數(shù)的基本用法,它的強大之處遠不止于此。
??在實際項目中,我們有些時候會將Python代碼寫入一些文件中,舉個例子,如以下的eg.txt,它儲存了我們想要的Python代碼,如下:
def fact(n): if n==1: return 1 else: return n*fact(n-1) t = fact(6) print(t)
請再次注意,這是一個txt格式的Python代碼。那么,我們?nèi)绾握{(diào)用它呢?答案就是exec()函數(shù),代碼如下:
with open("E://eg.txt", "r") as f: s = f.read() exec(s)
在上述代碼中,我們先讀取eg.txt文件的內(nèi)容,再轉(zhuǎn)交exec()函數(shù)執(zhí)行,輸出結(jié)果如下:
720
??是不是有點棒呢?除了能執(zhí)行string和code object外,還可以在exec()函數(shù)中加入?yún)?shù),參數(shù)的傳遞可以寫成字典(dict)形式。具體的使用方法可以參考下面的例子:
x = 10 expr = """ z = 30 sum = x + y + z print(sum) """ def func(): y = 20 exec(expr) exec(expr, {"x": 1, "y": 2}) exec(expr, {"x": 1, "y": 2}, {"y": 3, "z": 4}) func()
其輸出結(jié)果如下:
60
33
34
在expr語句中,有三個變量x,y,z,其中z值已給定,我們可以在exec()函數(shù)外指定x,y的值,也可以在exec()函數(shù)中以字典的形式指定x,y的值。在最后的語句中,我們給出了x,y,z的值,并且y值重復(fù),exec()函數(shù)接收后面一個y值,且z值傳遞不起作用,因此輸出結(jié)果為34.
??本次分享到此結(jié)束。本文介紹了幾個exec()函數(shù)使用的例子,希望能拋磚引玉,也歡迎大家多多交流~~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41580.html
摘要:毫無疑問,作為近兩年前端三大流行框架之一,正成為程序員們最喜愛的框架。自年月開源至今,已有千萬網(wǎng)站使用來進行前端構(gòu)架,使之成為最受歡迎的項目之一。經(jīng)過這幾年的沉淀,越來越強大,暫不提這幾年在國內(nèi)與之間的矛盾,這其中還有很大談判空間。 showImg(https://segmentfault.com/img/bV0dY9?w=469&h=240); React在國外已被各個公司的各種產(chǎn)品...
摘要:用匿名函數(shù)有個好處,因為函數(shù)沒有名字,不必擔心函數(shù)名沖突。和不同的是,把傳入的函數(shù)依次作用于每個元素,然后根據(jù)返回值是還是決定保留還是丟棄該元素。字符串給出當前平臺使用的行終止符。程序中間的退出,為正常退出。 列表生成式 函數(shù)的參數(shù)類型 lambda函數(shù) map, reduce, filter, sorted函數(shù) eval, exec, join, zip函數(shù) itertools中的...
摘要:還有很多開發(fā)者沒有意識到的加密算法的問題。不要使用哈希函數(shù)做為對稱加密算法的簽名。開發(fā)者建議使用基于口令的加密算法時,生成密鑰時要加鹽,鹽的取值最好來自,并指定迭代次數(shù)。不要使用沒有消息認證的加密算法加密消息,無法防重放。 本文作者:阿里移動安全@伊樵,@舟海 Android開發(fā)中,難免會遇到需要加解密一些數(shù)據(jù)內(nèi)容存到本地文件、或者通過網(wǎng)絡(luò)傳輸?shù)狡渌?wù)器和設(shè)備的問題,但并不是使用了加...
閱讀 3027·2021-11-16 11:42
閱讀 3683·2021-09-08 09:36
閱讀 959·2019-08-30 12:52
閱讀 2494·2019-08-29 14:12
閱讀 784·2019-08-29 13:53
閱讀 3601·2019-08-29 12:16
閱讀 655·2019-08-29 12:12
閱讀 2480·2019-08-29 11:16