国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python之淺談exec()函數(shù)

hedzr / 2398人閱讀

摘要:本次分享講簡單聊聊函數(shù)的用法,希望能給讀者一點(diǎn)啟示和參考。在最后的語句中,我們給出了的值,并且值重復(fù),函數(shù)接收后面一個(gè)值,且值傳遞不起作用,因此輸出結(jié)果為本次分享到此結(jié)束。本文介紹了幾個(gè)函數(shù)使用的例子,希望能拋磚引玉,也歡迎大家多多交流

??在Python中,exec()是一個(gè)十分有趣且實(shí)用的內(nèi)置函數(shù),不同于eval()函數(shù)只能執(zhí)行計(jì)算數(shù)學(xué)表達(dá)式的結(jié)果的功能,exec()能夠動態(tài)地執(zhí)行復(fù)雜的Python代碼,能夠十分強(qiáng)大。具體的介紹可以參考官方文檔: https://docs.python.org/3/lib... 。
??本次分享講簡單聊聊exec()函數(shù)的用法,希望能給讀者一點(diǎn)啟示和參考。
??首先是一個(gè)簡單的小例子,代碼如下:

i = 12
j = 13
exec("answer=i*j")
print("Answer is %s"%answer)

該代碼的輸出結(jié)果為:

Answer is 156

這表明第三句的exec()函數(shù)能夠正確地執(zhí)行Python代碼,并且能將計(jì)算結(jié)果賦予answer變量,就像真正的Python代碼一樣。
??那么,我們能不能讓exec()函數(shù)執(zhí)行一個(gè)復(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為字符串,它是一個(gè)遞歸地計(jì)算整數(shù)階乘的函數(shù)。因?yàn)閑xec()僅支持string和code object參數(shù),所以我們要將該遞歸函數(shù)轉(zhuǎn)化成一個(gè)字符串,當(dāng)然,格式還是要Python代碼的格式來,注意換行和縮進(jìn)。剛才例子的輸出結(jié)果為:

120

??可能有些讀者納了悶了,這些代碼不是直接能夠在Python中執(zhí)行嗎,為何還要多此一舉地把它寫成字符串,并用exec()執(zhí)行呢?筆者的答案是,剛才的例子只是為了演示exec()函數(shù)的基本用法,它的強(qiáng)大之處遠(yuǎn)不止于此。
??在實(shí)際項(xiàng)目中,我們有些時(shí)候會將Python代碼寫入一些文件中,舉個(gè)例子,如以下的eg.txt,它儲存了我們想要的Python代碼,如下:

def fact(n):
    if n==1:
        return 1
    else:
        return n*fact(n-1)
t = fact(6)
print(t)

請?jiān)俅巫⒁猓@是一個(gè)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

??是不是有點(diǎn)棒呢?除了能執(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語句中,有三個(gè)變量x,y,z,其中z值已給定,我們可以在exec()函數(shù)外指定x,y的值,也可以在exec()函數(shù)中以字典的形式指定x,y的值。在最后的語句中,我們給出了x,y,z的值,并且y值重復(fù),exec()函數(shù)接收后面一個(gè)y值,且z值傳遞不起作用,因此輸出結(jié)果為34.
??本次分享到此結(jié)束。本文介紹了幾個(gè)exec()函數(shù)使用的例子,希望能拋磚引玉,也歡迎大家多多交流~~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41580.html

相關(guān)文章

  • React | 高效前端淺談

    摘要:毫無疑問,作為近兩年前端三大流行框架之一,正成為程序員們最喜愛的框架。自年月開源至今,已有千萬網(wǎng)站使用來進(jìn)行前端構(gòu)架,使之成為最受歡迎的項(xiàng)目之一。經(jīng)過這幾年的沉淀,越來越強(qiáng)大,暫不提這幾年在國內(nèi)與之間的矛盾,這其中還有很大談判空間。 showImg(https://segmentfault.com/img/bV0dY9?w=469&h=240); React在國外已被各個(gè)公司的各種產(chǎn)品...

    曹金海 評論0 收藏0
  • Python進(jìn)階筆記

    摘要:用匿名函數(shù)有個(gè)好處,因?yàn)楹瘮?shù)沒有名字,不必?fù)?dān)心函數(shù)名沖突。和不同的是,把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是還是決定保留還是丟棄該元素。字符串給出當(dāng)前平臺使用的行終止符。程序中間的退出,為正常退出。 列表生成式 函數(shù)的參數(shù)類型 lambda函數(shù) map, reduce, filter, sorted函數(shù) eval, exec, join, zip函數(shù) itertools中的...

    ygyooo 評論0 收藏0
  • Android 應(yīng)用安全開發(fā)淺談加密算法的坑

    摘要:還有很多開發(fā)者沒有意識到的加密算法的問題。不要使用哈希函數(shù)做為對稱加密算法的簽名。開發(fā)者建議使用基于口令的加密算法時(shí),生成密鑰時(shí)要加鹽,鹽的取值最好來自,并指定迭代次數(shù)。不要使用沒有消息認(rèn)證的加密算法加密消息,無法防重放。 本文作者:阿里移動安全@伊樵,@舟海 Android開發(fā)中,難免會遇到需要加解密一些數(shù)據(jù)內(nèi)容存到本地文件、或者通過網(wǎng)絡(luò)傳輸?shù)狡渌?wù)器和設(shè)備的問題,但并不是使用了加...

    不知名網(wǎng)友 評論0 收藏0

發(fā)表評論

0條評論

hedzr

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<