python通过字符串调用函数

通过字符串调用已经定义好的函数

初始状态

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>}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值