国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Python使用eval函數(shù)執(zhí)行動(dòng)態(tài)標(biāo)表達(dá)式過程詳解

瀏覽:3日期:2022-07-08 08:35:53

英文文檔:

eval(expression, globals=None, locals=None)The arguments are a string and optional globals and locals. If provided, globals must be a dictionary. If provided, localscan be any mapping object.

The expression argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the globals and locals dictionaries as global and local namespace. If the globals dictionary is present and lacks ‘__builtins__’, the current globals are copied into globals before expression is parsed. This means that expressionnormally has full access to the standard builtins module and restricted environments are propagated. If the localsdictionary is omitted it defaults to the globals dictionary. If both dictionaries are omitted, the expression is executed in the environment where eval() is called. The return value is the result of the evaluated expression. Syntax errors are reported as exceptions. Example:

>>> x = 1>>> eval(’x+1’)2

This function can also be used to execute arbitrary code objects (such as those created by compile()). In this case pass a code object instead of a string. If the code object has been compiled with ’exec’ as the mode argument, eval()‘s return value will be None.

Hints: dynamic execution of statements is supported by the exec() function. The globals() and locals() functions returns the current global and local dictionary, respectively, which may be useful to pass around for use by eval() or exec().See ast.literal_eval() for a function that can safely evaluate strings with expressions containing only literals.

執(zhí)行動(dòng)態(tài)標(biāo)表達(dá)式求值

說明:

1. 執(zhí)行動(dòng)態(tài)語句,返回語句執(zhí)行的值。

>>> eval(’1+2+3+4’)10

2. 第一個(gè)參數(shù)為語句字符串,globals參數(shù)和locals參數(shù)為可選參數(shù),如果提供,globals參數(shù)必需是字典,locals參數(shù)為mapping對(duì)象。

3. globals參數(shù)用來指定代碼執(zhí)行時(shí)可以使用的全局變量以及收集代碼執(zhí)行后的全局變量。

>>> g = {’num’:2}>>> eval(’num + 2’) #num未定義Traceback (most recent call last): File '<pyshell#3>', line 1, in <module> eval(’num + 2’) File '<string>', line 1, in <module>NameError: name ’num’ is not defined>>> eval(’num + 2’,g) #g中有定義num,可執(zhí)行4

4. locals參數(shù)用來指定代碼執(zhí)行時(shí)可以使用的局部變量以及收集代碼執(zhí)行后的局部變量

>>> g = {’num1’:2}>>> l = {’num2’:4}>>> eval(’num1+num2’,g,l)6

5. 為了保證代碼成功運(yùn)行,globals參數(shù)字典不包含 __builtins__ 這個(gè) key 時(shí),Python會(huì)自動(dòng)添加一個(gè)key為 __builtins__ ,value為builtins模塊的引用。如果確實(shí)要限制代碼不使用builtins模塊,需要在global添加一個(gè)key為__builtins__,value為{}的項(xiàng)即可(很少有人這么干吧)。

>>> g = {}>>> eval(’abs(-1)’,g)1>>> g = {’__builtins__’:{}}>>> eval(’abs(-1)’,g) #不能使用內(nèi)置函數(shù)了Traceback (most recent call last): File '<pyshell#9>', line 1, in <module> eval(’abs(-1)’,g) File '<string>', line 1, in <module>NameError: name ’abs’ is not defined

6. 當(dāng)globals參數(shù)不提供是,Python默認(rèn)使用globals()函數(shù)返回的字典去調(diào)用。當(dāng)locals參數(shù)不提供時(shí),默認(rèn)使用globals參數(shù)去調(diào)用。

>>> num = 1>>> eval(’num+2’)3>>> globals() #返回字典中含有num的key{’__doc__’: None, ’num’: 1, ’__package__’: None, ’__name__’: ’__main__’, ’__loader__’: <class ’_frozen_importlib.BuiltinImporter’>, ’__spec__’: None, ’__builtins__’: <module ’builtins’ (built-in)>}>>> eval(’num+2’,{}) #locals參數(shù)未提供,locals參數(shù)=globals參數(shù)Traceback (most recent call last): File '<pyshell#3>', line 1, in <module> eval(’num+2’,{}) File '<string>', line 1, in <module>NameError: name ’num’ is not defined>>> l = locals() >>> eval(’num+2’,{},l) #locals參數(shù)含有num的key,能求值3>>> locals(){’__doc__’: None, ’l’: {...}, ’num’: 1, ’__package__’: None, ’__name__’: ’__main__’, ’__loader__’: <class ’_frozen_importlib.BuiltinImporter’>, ’__spec__’: None, ’__builtins__’: <module ’builtins’ (built-in)>}>>>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲成aⅴ人片在线观 | 欧美一级性视频 | 亚洲欧美不卡中文字幕 | 国内亚州视频在线观看 | 99视频在线观看高清 | 精品国产免费观看一区 | 黄页网址免费观看18网站 | 免费看特级淫片日本 | 久久99国产乱子伦精品免费 | 亚洲视频精品在线 | 成人欧美| 欧美一级在线免费观看 | 国产91丝袜在线播放九色 | 日本www免费视频网站在线观看 | 2020久久国产最新免费观看 | 国产韩国精品一区二区三区 | 1024色淫免费视频 | 国产成人系列 | 一区二区在线播放福利视频 | 欧美三级日韩三级 | 亚洲狠狠狠一区二区三区 | 日本国产一区二区三区 | 狼人久久尹人香蕉尹人 | 中文字幕一区二区三区在线观看 | 国产盗摄精品一区二区三区 | 国产成人福利美女观看视频 | 免费观看日本视频 | 欧洲国产伦久久久久久久 | 免费一级毛片不卡在线播放 | 国产精品久久久久久久久久免费 | 天堂8资源8在线 | 久久精品亚洲 | 国产精品国色综合久久 | 国产国产人免费人成成免视频 | 国产免费观看a大片的网站 国产免费黄色网址 | 最新三级网址 | 国产免费一区二区三区在线观看 | 黄色成人在线 | 免费一级毛片在线播放视频 | 久久精品国产精品亚洲人人 | 狼人青草久久网尹人 |