python中globals_Python 中 globals() 函数的使用

今天碰到一个问题,需要获取并调用当前类中的有一定特征的函数,恰好发现了 Python 内置的 globals() 函数

globals() 的定义:返回一个字典, 表示当前的全局符号表。 这个符号表始终针对当前模块(对函数或方法来说, 是指定义它们的模块, 而不是调用它们的模块)。

如下示例,我只想调用函数名以 _promo 结尾的函数,但是我不确定具体方法名和函数个数的情况下怎么办呢?这时候我们可以用 globals() 函数来实现,注意示例中 main 函数中的代码部分

def zero_promo():

return 0

def one_promo():

return 1

def two_promo():

return 2

def hello():

print("Hello")

if __name__ == '__main__':

promos = [name for name in globals()]

print(promos)

输出结果如下:

['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', '__file__', '__cached__', 'zero_promo', 'one_promo', 'two_promo', 'hello']

前面打印的都是一些内置函数,我们不关注,我们只关注最后面四个我们自己定义的函数,那么我只想调用某一类型的函数,比如后缀是 _promo 结尾的怎么办呢?很简单,加个过滤条件:

if __name__ == '__main__':

promos = [name for name in globals() if name.endswith("_promo")]

print(promos)

输出结果如下:

['zero_promo', 'one_promo', 'two_promo']

问题来了,我得到了我需要调用的函数名,但是是 str 类型的,那我怎么执行呢?很简单,简单修改一下代码

if __name__ == '__main__':

promos = [globals()[name] for name in globals() if name.endswith("_promo")]

print(promos)

输出结果如下:

[, , ]

此时变成了一个个可以直接调用的函数,我们可以通过

print(promos[0]())

来调用第一个函数并打印结果~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值