exec语句用来执行储存在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。下面是一个简单的例子。
>>> exec 'print "Hello World"'
Hello World
注意例子中exec语句的用法和eval_r(), execfile()是不一样的. exec是一个语句(就象print或while), 而eval_r()和execfile()则是内建函数.
理解网上的一个例子:
“
实际上我是要用作域的名称…具体来说,我想实现这样一个效果…
有一个类叫做AFunction。
那么运行下述代码:
import appuifw
d=AFunction("Age=10")
appuifw.note(str(d.Age).decode("utf-8"))
后会输出结果10。
解决方案:
class Afunction:
def __init__(self,MyString):
exec("self."+MyString)
”
exec执行了存储的字符串(self.Age=10);所以结果为d.Age = 10
下面还要说明下__init__方法:
一个类定义了__init__()方法以后,类实例化时就会自动为新生成的类实例调用调用__init__() 方法。所以在Bag例子中,可以用如下程序生成新的初始化的实例:
x = Bag()当然,__init__()方法可以有自变量,这样可以实现更大的灵活性。在这样的情况下,类实例化时指定的自变量被传递给__init__()方法。例如:
>>> class Complex:... def __init__(self, realpart, imagpart):... self.r = realpart... self.i = imagpart...
>>> x = Complex(3.0,-4.5)
>>> x.r, x.i(3.0, -4.5)方法可以和普通函数一样地引用全局名字。方法的全局作用域是包含类定义的模块。(注意类本身并不被用作全局作用域!)虽然我们很少需要在方法中使用全局数据,全局作用域还是有许多合法的用途:例如,导入全局作用域的函数和模块可以被方法使用,在同一模块中定义的函数和方法也可以被方法使用。
摘自:
http://blog.sina.com.cn/s/blog_76e94d210100w1bl.html python 中 exec、 eval、 execfile 和 compile 用法
http://bbs.dospy.com/thread-5289707-1-292-4.html 如何将字符串的内容作为变量名使用?【已自行解决】
http://www.newasp.cn/tech/program/21156.html Python编程入门