I do not know exactly what you want to do, but the simplest answer for you is:
# nome = menuOpt[1]
globals().get(nome)()
But it is good to not let the code die if the name does not exist or if the name is not 'callable', this can be achieved (using the approach: EAFP 'it's easier to ask for forgiveness than permission') like this:
# nome = menuOpt[1]
try:
globals().get(nome)()
except TypeError:
pass
But I already had to do this for a system of plugins where the complete package ( from pacote.x.y.z import funcao
) was needed, so I needed something more elaborate, like:
def getattrfull(path):
"""
Obtem um atributo de um caminho separado por '.' simulando um 'import'
Exemplo para simular 'from os import name as sistema':
>>> sistema = getattrfull('os.name')
>>> sistema
'posix'
Funciona para funcoes/classes/etc:
>>> decode = getattrfull('json.loads')
>>> decode('[1, 2, 3, 4]')
[1, 2, 3, 4]
Se o modulo ou funcao nao existir ele retorna 'None'
>>> getattrfull('eu.nao.existo')
None
"""
# Primeiro tem que separar o modulo da funcao/classe/qualquercoisa
# XXX: o codigo só funciona se tiver ".", ou seja, não pega nomes
# locais ao arquivo atual, para fazer comportamento semelhante use:
# >>> globals().get(nome)
module_name, attr_name = path.rsplit(".", 1)
# importar modulo
try:
module = __import__(module_name, locals(), globals(), [str(attr_name)])
except ImportError:
return None
# procurar pelo atributo
try:
attr = getattr(module, attr_name)
except AttributeError:
return None
return attr