exec:可以執行字串中的python**
動態執行python**。也就是說exec可以執行複雜的python**,而不像eval函式那樣只能計算乙個表示式的值。
exec(source, globals=none, locals=none, /)
source:必選引數,表示需要被指定的python**。它必須是字串或code物件。如果source是乙個字串,該字串會先被解析為一組python語句,然後執行。如果source是乙個code物件,那麼它只是被簡單的執行。
globals:可選引數,表示全域性命名空間(存放全域性變數),如果被提供,則必須是乙個字典物件。
locals:可選引數,表示全域性命名空間(存放區域性變數),如果被提供,可以是任何對映物件。如果引數被忽略,那麼它將會取與globals相同的值。
如果globals與locals都被忽略,那麼它們將取eval()函式被呼叫環境下的全域性命名空間和區域性命名空間
返回值:
exec函式的返回值永遠為none
此處插入乙個重要文獻,可用來深入理解exec:進入
eval:執行字串裡的表示式(加減乘除等各種表示式)。計算指定表示式的值。也就是說它要執行的python**只能是單個表示式(注意eval不支援任何形式的賦值操作),而不能是複雜的**邏輯
eval(source, globals=none, locals=none, /)
返回值:
如果source是乙個code物件,且建立該code物件時,complie函式的mode引數是『exec』,那麼eval()函式的返回值是none;
否則,如果source是乙個輸出語句,如print(),則eval()返回結果為none;
否則,source表示式的結果就是eval()函式的返回值
例項:
3.complie函式
函式的作用:
compile(source, filename, mode, flags=0, dont_inherit=false, optimize=-1)
引數說明:
source:字串或ast物件,表示需要進行編譯的python**
filename:指定需要編譯的**檔案,如果不是檔案讀取**則傳遞一些可辨認的值。
mode:用於標識必須當做那類代表來編譯;如果source是由乙個**語句序列組成,則指定mode=『exec』,如果source由單個表示式組成,則指定mode=『eval』;如果source是由乙個單獨的互動式語句組成,則指定modo=『single』。必須要制定,不然肯定會報錯。
例子:
s =
""" #一大段**
for x in range(10):
print(x, end='')
print()
"""code_exec =
compile
(s,''
,'exec'
)#必須要指定mode,指定錯了和不指定就會報錯。
code_eval =
compile
('10 + 20',''
,'eval'
)#單個表示式
code_single =
compile
('name = input("input your name: ")',''
,'single'
)#互動式
a =exec
(code_exec) 使用的exec,因此沒有返回值
b =eval
(code_eval)
c =exec
(code_single) 互動
d =eval
(code_single)
print
('a: '
, a)
print
('b: '
, b)
print
('c: '
, c)
print
('name: '
, name)
print
('d: '
, d)
print
('name; '
, name)
執行結果:
0123456789
#有print就會列印
input your name: kebi
input your name: kebi
a:none
b:30
c:none
name: kebi
d:none
name; kebi
python中eval的用法
eval 用於執行乙個字串的表示式,並返回表示式的值 eval expression,globals none,locals none 官方文件中的解釋是,將字串str當成有效的表示式來求值並返回計算結果。globals和locals引數是可選的,如果提供了globals引數,那麼它必須是dicti...
python中的eval函式
eval 函式用來執行乙個字串表示式,並返回表示式的值。還可以把字串轉化為list tuple dict。eval函式的語法 eval expression globals locals 引數 expression 表示式。globals 變數作用域,如果被提供,必須是乙個字典物件。locals 變...
Python中的eval函式
一 簡介 eval函式就是實現list dict tuple與str之間的轉化,而str函式實現把list dict tuple轉換成字串 1 字串轉化為列表 1 字串轉化為列表 2 a 1,2 3,4 5,6 7,8 9,10 3 print type a 4 b eval a 5print ty...