eval的使用python_python:利用eval来执行字符串代码

接口

eval(str [,globals [,locals ]])函数将字符串str当成有效Python表达式来求值,并返回计算结果

之前看到eval这个函数时一直想不到需要用的地方,今天正在研究python属性相关问题时正好用上了,直接上代码

def func():

f =1

if __name__ == '__main__':

#打印func的内建属性

print dir(func)

输出如下:

['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']

天啦噜,一个简单的函数就有这么多内建属性,于是我想调用print func.call来看看这些属性究竟是什么鬼

但是这么多属性,不可能一个一个打印的,于是我想遍历这个列表,然后不断执行func.attr,但是遍历出来的attr是字符串啊,eval出场的时候到了

for attr in dir(func):

print attr, ":", eval("func."+attr)

输出如下,可见python私下还是做了很多不知道的东西,有时间好好研究下这些属性

__call__ :

__class__ :

__closure__ : None

__code__ : None

__delattr__ :

__dict__ : {}

__doc__ : None

__format__ :

__get__ :

__getattribute__ :

__globals__ : {'son': , 'uic': , 'main': , 'func': , 'QtGui': , 'parent': , '__builtins__': , '__file__': 'C:\\Users\\lht\\Desktop\\\xb1\xcf\xc9\xe8\\test.py', 'Des': , 'qtCreatorFile': 'first.ui', '__package__': None, 'sys': , 'Ui_MainWindow': , 'MyApp': , '__name__': '__main__', 'QtBaseClass': , 'QtCore': , '__doc__': None, 'attr': '__globals__'}

__hash__ :

__init__ :

__module__ : __main__

__name__ : func

__new__ :

__reduce__ :

__reduce_ex__ :

__repr__ :

__setattr__ :

__sizeof__ :

__str__ :

__subclasshook__ :

func_closure : None

func_code : None

func_dict : {}

func_doc : None

func_globals : {'son': , 'uic': , 'main': , 'func': , 'QtGui': , 'parent': , '__builtins__': , '__file__': 'C:\\Users\\lht\\Desktop\\\xb1\xcf\xc9\xe8\\test.py', 'Des': , 'qtCreatorFile': 'first.ui', '__package__': None, 'sys': , 'Ui_MainWindow': , 'MyApp': , '__name__': '__main__', 'QtBaseClass': , 'QtCore': , '__doc__': None, 'attr': 'func_globals'}

func_name : func

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值