九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python之淺談exec函數(shù)

在Python中,exec()是一個十分有趣且使用的內(nèi)置函數(shù),不同于eval()函數(shù)只能執(zhí)行計算數(shù)學表達式的結果的功能,exec()能夠動態(tài)地執(zhí)行復雜的Python代碼,能夠十分強大。具體的介紹可以參考官方文檔: https://docs.python.org/3/library/functions.html#exec 。 

??本次分享講簡單聊聊exec()函數(shù)的用法,希望能給讀者一點啟示和參考。 

??首先是一個簡單的小例子,代碼如下:

i = 12

j = 13

exec("answer=i*j")

print("Answer is %s"%answer)


該代碼的輸出結果為:

Answer is 156

這表明第三句的exec()函數(shù)能夠正確地執(zhí)行Python代碼,并且能將計算結果賦予answer變量,就像真正的Python代碼一樣。 

??那么,我們能不能讓exec()函數(shù)執(zhí)行一個復雜的Python代碼呢?Why not?請看一下例子:

func = "def fact(n):\n\treturn 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代碼的格式來,注意換行和縮進。剛才例子的輸出結果為:

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í)行,輸出結果如下:

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()

其輸出結果如下:

60 

33 

34

在expr語句中,有三個變量x,y,z,其中z值已給定,我們可以在exec()函數(shù)外指定x,y的值,也可以在exec()函數(shù)中以字典的形式指定x,y的值。在最后的語句中,我們給出了x,y,z的值,并且y值重復,exec()函數(shù)接收后面一個y值,且z值傳遞不起作用,因此輸出結果為34. 

??

--------------------- 

作者:劍與星辰 

來源:CSDN 

原文:https://blog.csdn.net/jclian91/article/details/80076512 

版權聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
python中的exec()、eval()以及complie()
python中函數(shù)的進階用法
Python 如何將字符串作為代碼執(zhí)行
python回調(diào)函數(shù)能做什么?
Python遞歸函數(shù)計算階乘n!
for 循環(huán)和while循環(huán)區(qū)別
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服