Python中怎么用字符串来命名一个函数?
答案:2 悬赏:60 手机版
解决时间 2021-01-19 13:52
- 提问者网友:听门外雪花风
- 2021-01-19 01:37
Python中怎么用字符串来命名一个函数?
最佳答案
- 五星知识达人网友:骨子里都是戏
- 2021-01-19 02:05
有2个标准库函数可以完成你说的要求,建议用eval()
eval() 和exec()
区别是eval()有返回值
def test1():
print "Test1 Excuted!"
return True
ret = eval ("test1()")
print ret结果如下
>>>
Test1 Excuted!
True而exec()只执行,并无返回值。
def test2():
print "Test2 Excuted!"
return True
exec("test2()")结果如下
>>>
Test2 Excuted!
>>>如果要将exec()赋值,会有以下语法错误!
ret = exec("test2()")
eval() 和exec()
区别是eval()有返回值
def test1():
print "Test1 Excuted!"
return True
ret = eval ("test1()")
print ret结果如下
>>>
Test1 Excuted!
True而exec()只执行,并无返回值。
def test2():
print "Test2 Excuted!"
return True
exec("test2()")结果如下
>>>
Test2 Excuted!
>>>如果要将exec()赋值,会有以下语法错误!
ret = exec("test2()")
全部回答
- 1楼网友:患得患失的劫
- 2021-01-19 02:49
是说,知道一个函数的函数名,但是没有这个函数的引用么?
可以考虑下面的做法。
定义一个函数
def abc():
print "123"
然后定义一个字符串,内容为abc
a="abc"
然后尝试调用a对应的函数
vars()[a]()
vars()取出当前可用的变量,然后用a索引它对应的函数,最后加上()执行。追问我也是一开始就想到这个,但是要求是可以根据输入动态的添加函数。。。我一开始也是想到这个,但是要求是可以根据输入,动态的添加函数。。。追答python有个exec函数,可以动态的执行文本串。
比如
a = "def abcd():\n\tprint \"234\"\n"
exec(a)追问呃。。这个函数貌似很厉害的样子0.0
可以考虑下面的做法。
定义一个函数
def abc():
print "123"
然后定义一个字符串,内容为abc
a="abc"
然后尝试调用a对应的函数
vars()[a]()
vars()取出当前可用的变量,然后用a索引它对应的函数,最后加上()执行。追问我也是一开始就想到这个,但是要求是可以根据输入动态的添加函数。。。我一开始也是想到这个,但是要求是可以根据输入,动态的添加函数。。。追答python有个exec函数,可以动态的执行文本串。
比如
a = "def abcd():\n\tprint \"234\"\n"
exec(a)追问呃。。这个函数貌似很厉害的样子0.0
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯