热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

接口eval(str[,globals[,locals]])函数将字符串str当成有效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



推荐阅读
author-avatar
何其何从丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有