所以最近我了解到 eval() 是一个令人惊讶的函数,它可以将字符串转换为代码命令,在编写参数是函数名称字符串的函数时,它可能非常有用。
但我想知道使用它的更 Pythonic 方式是什么。例子:
a = [1,2,3,1,2,3,4,1,2,5,6,7]
b = 'count'
target = 2
# regular way
print(a.count(target)) # >>> 3
我尝试用 f-string 编写,它会起作用:
print(eval(f'{a}' + '.' + b + f'({target})')) # >>> 3
令我惊讶的是,即使我不使用 f-string,它也会起作用:
print(eval('a' + '.' + b + '(target)')) # >>> 3
这对我来说有点疑问,因为没有 f-string,'a' 可能会令人困惑,很难判断这只是一个字符串还是伪装成字符串的变量。
不知道大家怎么看这个?哪一个对你来说更蟒蛇?
谢谢!