python中是否有任何替代方法可以像unix shell脚本{!variableName}中那样在运行时替换变量
在unix shell脚本中: 如果我打电话python中是否有任何替代方法可以像unix shell脚本{!variableName}中那样在运行时替换变量,python,python-3.x,bash,Python,Python 3.x,Bash,在unix shell脚本中: 如果我打电话 function\u name“${!variable}”->变量将在执行/运行时被替换 python中是否存在其他替代方案?在创建变量之前,还涉及一些其他逻辑。但我对{!variable}备选方案感兴趣 您正在寻找eval功能: a = "there" b = "a" eval(b) 产生输出: 'there' 当然,eval函数虽然比bash间接变量引用要详细一点,但它的用途也要广泛得多,因为可以让间接引用的变量(b)包含任何python表达
function\u name“${!variable}”
->变量将在执行/运行时被替换
python中是否存在其他替代方案?在创建
变量之前,还涉及一些其他逻辑。但我对{!variable}
备选方案感兴趣 您正在寻找eval
功能:
a = "there"
b = "a"
eval(b)
产生输出:
'there'
当然,eval
函数虽然比bash间接变量引用要详细一点,但它的用途也要广泛得多,因为可以让间接引用的变量(b
)包含任何python表达式。您正在寻找eval
函数:
a = "there"
b = "a"
eval(b)
产生输出:
'there'
当然,eval
函数虽然比bash间接变量引用要详细一点,但它的用途也要广泛得多,因为可以让间接引用的变量(b
在本例中)包含任何python表达式。在python函数中是第一类对象。这意味着您可以像传递任何变量一样传递它们
def print_this():
print('this')
def print_that():
print('that')
p1 = print_this
p2 = print_that
p1()
p2()
因此,在python中不需要使用eval
函数是一级对象。这意味着您可以像传递任何变量一样传递它们
def print_this():
print('this')
def print_that():
print('that')
p1 = print_this
p2 = print_that
p1()
p2()
因此,您不需要使用eval
您给出的是bash的答案,他要求使用python替代方法。@Chris看起来不像bashsyntax@ChrisMaes这个答案不是抨击。我刚在python3上试过,效果不错。我的错。你的回答是正确的。这仍然是一个重复的问题,应该标记为这样。谢谢,我不知道,python中有一个eval。我想这就是我的答案。将关闭此对话框。您正在给出bash答案,他要求提供python替代方案。@Chris,看起来不像bashsyntax@ChrisMaes这个答案不是抨击。我刚在python3上试过,效果不错。我的错。你的回答是正确的。这仍然是一个重复的问题,应该标记为这样。谢谢,我不知道,python中有一个eval。我想这就是我的答案。将关闭此操作。您正在假设为什么操作需要按名称访问变量。你可能是对的,但对他的问题的严格回答是使用eval
。我也不认为OP试图将函数名放在变量中,而是简单地将变量名的内容传递给函数(我不是bash专家)。eval可能很危险,只能作为最后的手段使用。我不建议将此作为第一步。我检查了函数的bash语法,我认为您误解了OP的问题。OP想要的不是调用变量中名为的函数,而是调用已知函数,并将另一个变量中名为的变量的内容传递给它。您提供的答案是对不同问题的正确答案。如果是这样,那么使用dict
的@chepner answer就是正确答案。无法推荐eval
。您正在假设为什么OP需要按名称访问变量。你可能是对的,但对他的问题的严格回答是使用eval
。我也不认为OP试图将函数名放在变量中,而是简单地将变量名的内容传递给函数(我不是bash专家)。eval可能很危险,只能作为最后的手段使用。我不建议将此作为第一步。我检查了函数的bash语法,我认为您误解了OP的问题。OP想要的不是调用变量中名为的函数,而是调用已知函数,并将另一个变量中名为的变量的内容传递给它。您提供的答案是对不同问题的正确答案。如果是这样,那么使用dict
的@chepner answer就是正确答案。无法推荐eval
。您有一个XY问题,因为您首先尝试将变量名存储为数据。您可能希望使用dict
,而不是松散的单个变量组合来保存数据。您有一个XY问题,因为您首先尝试将变量名存储为数据。您可能希望使用dict
,而不是松散的单个变量组合来保存数据。