通过字符串调用已经定义好的函数
初始状态
def chinese(text):
print("jieba分词")
def english(text):
print("nltk处理对文本进行分词")
def textprocess(file, language):
text = open(file).read()
# 字符串调用函数
language(text)
file = '1.txt'
language = 'english'
textprocess(file, language)
but
textprocess(file, language)
language(text)
TypeError: ‘str’ object is not callable
字典调用
# The first
def chinese(text):
print("jieba分词")
def english(text):
print("nltk处理对文本进行分词")
str_func_pair = {"chinese": chinese,
'english': english}
def textprocess(file, language):
text = open(file).read()
# 字典调用函数名
str_func_pair[language](text)
file = '1.txt'
language = 'english'
textprocess(file, language)
globals()或者eval
使用globals()函数获取全局变量,其实实现方式跟字典差不多
def chinese(text):
print("jieba分词")
def english(text):
print("nltk处理对文本进行分词")
# 查看全局变量
print(globals())
def textprocess(file, language):
text = open(file).read()
eval(language)(text)
#或者通过globals调用函数名
# globals()[language](text)
file = '1.txt'
language = 'english'
textprocess(file, language)
because
print(globals)
{‘name’: ‘main’,
‘doc’: None,
‘package’: None,
‘loader’: <_frozen_importlib_external.SourceFileLoader object at 0x7f5d6000f1d0>,
‘spec’: None,
‘annotations’: {},
‘builtins’: <module ‘builtins’ (built-in)>,
‘file’: ‘/home/yue/PycharmProjects/web_static_server/dict_def.py’,
‘cached’: None,
‘chinese’: <function chinese at 0x7f5d60033e18>,
‘english’: <function english at 0x7f5d5e5c3510>}