python--compile、exec、eval函數使用
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’)
flags:變量作用域,局部命名空間,如果被提供,可以是任何映射對象
flags和dont_inherit:是用來控制編譯源碼時的標志
# 一段代碼塊
s1 = """
for i in range(8):
if i % 2 == 0:
print(i)
"""
# 一句命令
s2 = '2+10'
# 執行交互式命令
s3 = 'input("請輸入用戶名: ")'
code_exec = compile(s1, '<string>', 'exec') # 執行一段代碼塊
code_eval = compile(s2, '<string>', 'eval') # 執行一句代碼
code_single = compile(s3, '<string>', 'single') # 執行交互式命令
print('code_exec: ', exec(code_exec))
print('code_eval: ', eval(code_eval))
print('exec_code_single: ', exec(code_single))
print('eval_code_single: ', eval(code_single))
結果:

浙公網安備 33010602011771號