如何获取一个字符串并将其用作调用函数的标识符?
How to take a string and use it as an identifier to call a function?
我为 类 创建了一个自动评分器,它使用命令行参数调用该问题集的相关函数。我需要将命令行参数提取为字符串,然后将其用作函数调用。在示例中,我将字符串分配给 pset,然后调用 pset 并将 studentFile 作为参数传递。问题是解释器将其视为字符串而不是标识符。
this is a picture of my code
if len(sys.argv) == 2:
try:
# find and store the file
studentFile = helpers.findInSubdirectory(sys.argv[1])
for i in studentFile.split('/'):
if i.endswith('.py'):
pset = i[:-3]
pset(studentFile)
一种不安全的方法是使用 eval
或查看 globals()
字典。稍微安全一点的方法是在字典中创建一个 string-to-function 映射,然后从映射中查找函数。
def foo():
print('hi')
def bar():
print('see you')
funs = { 'foo': foo, 'bar': bar }
funs['foo']()
我为 类 创建了一个自动评分器,它使用命令行参数调用该问题集的相关函数。我需要将命令行参数提取为字符串,然后将其用作函数调用。在示例中,我将字符串分配给 pset,然后调用 pset 并将 studentFile 作为参数传递。问题是解释器将其视为字符串而不是标识符。
this is a picture of my code
if len(sys.argv) == 2:
try:
# find and store the file
studentFile = helpers.findInSubdirectory(sys.argv[1])
for i in studentFile.split('/'):
if i.endswith('.py'):
pset = i[:-3]
pset(studentFile)
一种不安全的方法是使用 eval
或查看 globals()
字典。稍微安全一点的方法是在字典中创建一个 string-to-function 映射,然后从映射中查找函数。
def foo():
print('hi')
def bar():
print('see you')
funs = { 'foo': foo, 'bar': bar }
funs['foo']()