Python学习笔记7-高级迭代器

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

将任何字符串作为python表达式求值:

eval()方法:

eval(source[, globals[, locals]]) -> value

Evaluate the source in the context of globals and locals.

The source may be a string rePResenting a Python expression

or a code object as returned by compile().

The globals must be a dictionary and locals can be any mapping,

defaulting to the current globals and locals.

If only globals is given, locals defaults to it.

用法:

>>> eval('1+1==2')

True

>>> eval('1+1==3')

False

>>> eval('9567+1085 == 10652')

True

>>> eval('"A"+"B"')

'AB'

>>> eval('"MARK".translate({65:79})')

'MORK'

>>> eval('"AAAAA".count("A")')

>>> eval("x*5",{}, {})

Traceback (most recent call last):

File "<pyshell#120>", line 1, in <module>

eval("x*5",{}, {})

File "<string>", line 1, in <module>

NameError: name 'x' is not defined

>>> eval("x*5",{"x":x},{})

25

>>> import math

>>> eval("math.sqrt(x)",{"x":x},{})

Traceback (most recent call last):

File "<pyshell#123>", line 1, in <module>

eval("math.sqrt(x)",{"x":x},{})

File "<string>", line 1, in <module>

NameError: name 'math' is not defined

注:

给eval()函数传递的第二、第三个参数担当了求值表达式是全局和局部名字空间的角色

eval()是不安全的,为了安全的求值不受信任的表达式,需要定义一个将"__builtins__"映射为none的全局名字空间字典。在内部,“内建”函数包含在一个叫“__builtins__"的伪模块内。

re.findall() -- 返回字符串中所有字母

set() -- 返回字符串中所有不同的字母

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航