从一致的字符串名称中调用Python函数名称

时间:2020-01-06 15:38:51

标签: python function

我想通过串联“字符串” +变量+“字符串”来创建def函数名称,然后调用该def函数。

为了简化操作,我目前正在使用此压缩版本的代码来类似地完成任务,并且我想最小化do_update(a)函数的硬代码内容:

ROTATE = '90'

ROT20 = [
[0, 0, 0, 0, 0, 0, 0, 0],
[126, 129, 153, 189, 129, 165, 129, 126],
[126, 255, 231, 195, 255, 219, 255, 126],
[0, 8, 28, 62, 127, 127, 127, 54],
[0, 8, 28, 62, 127, 62, 28, 8],
[62, 28, 62, 127, 127, 28, 62, 28],
[62, 28, 62, 127, 62, 28, 8, 8],
[0, 0, 24, 60, 60, 24, 0, 0],
];

def updatevalues90(a):
  b = []
  for i in range(8):
    for j in range(8):
      b[i] += a[j] + i
  return b

def do_update(a):  
  if ROTATE == '90':
    ROT = [updatevalues90(char) for char in a]
  elif ROTATE == '180':  
    ROT = [updatevalues180(char) for char in a]
  elif ROTATE == '270':
    ROT = [updatevalues270(char) for char in a]

do_update(ROT20)

我尝试过的所有事情都导致无效语法或ROT充满了我想要的字符串名称。

我想对updatevalues90(char)进行函数调用,而不是需要对其进行硬编码,我想将其更改为:

ROT = ["updatevalues" + ROTATE + "(char)" for char in a]

因此ROTATE中的任何值都将成为函数调用的一部分,即函数名称。

我的问题是如何在Python中将字符串和变量名连接为可用的函数名?

我认为是eval,但是我无法获得对我有用的语法。也许Python中有一些更简单的方法可以工作?

1 个答案:

答案 0 :(得分:4)

将函数存储在 import webbrowser webbrowser.open("https://google.com") 中:

dict