今天碰到一个问题,需要获取并调用当前类中的有一定特征的函数,恰好发现了 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]())

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

python中globals_Python 中 globals() 函数的使用相关推荐

  1. python中locals函数_python中locals和globals函数

    首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...

  2. python 实例方法调用时可以忽略第一个参数_盘点Python中易忽略的函数

    Python 内置函数 1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数, ...

  3. python中的内置函数怎么学_python内部函数学习(九)

    python提供了很多的内置函数,这些内置的函数在某些情况下,可以起到很大的作用,而不需要专门去 写函数实现XX功能,直接使用内置函数就可以实现,下面分别来学习内置函数的使用和案例代码. 1.abs( ...

  4. python nums函数_Python中的内置函数

    Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...

  5. Python——内置模块中的内置函数

    内置模块中的内置函数 我们在安装好了 Python 配置文件后,也将 Python 本身带有的库也安装好了,Python 自带的库也叫做 Python的内置模块. Python 的内置模块是 Pyth ...

  6. python中的内置函数

    前言 本人只在csdn写博客 内置函数 介绍 一. 数学运算 abs()求绝对值函数 round() 近似取值 pow()求指数 divmod()求商和余数 max()求最大值和min()求最小值 s ...

  7. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

  8. python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)

    python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...

  9. python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组、使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank)

    python使用numpy中的flatten函数将2D numpy数组拉平为1Dnumpy数组.使用np.linalg.matrix_rank函数计算2D numpy数组的秩(rank) 目录

最新文章

  1. 牛客网——求平均年龄(水题)
  2. POJ 1091 跳蚤
  3. hibernate.hbm.xml详解
  4. 用户密码重设对EFS的影响
  5. python安装Selenium,配置ChromeDriver
  6. 服务器放在机柜_机架式服务器和塔式服务器有区别吗
  7. 云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...
  8. Silverlight 2 中简单的2.5D控件
  9. linux+ipv6免流量下载,如何限定apt-get使用IPv4或IPv6协议下载
  10. javascript查看详情与收起详情
  11. java模板beetl引擎,Beetl java模板引擎
  12. 163邮箱如何注册呢?
  13. 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
  14. Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解
  15. 中国文化产业基地(园区)前景预测和发展战略规划建议报告2021年版
  16. 广义表的存储结构--头尾链表存储表示/扩展线性链表存储表示
  17. Springboot项目全局异常统一处理
  18. 认知网络知识点及例题总结
  19. linux扩展堆函数,linux下进程堆栈下溢出判断及扩展实现
  20. java实现第六届蓝桥杯立方体自身

热门文章

  1. pregel 与 spark graphX 的 pregel api
  2. 网络安全宣传小程序计算机毕业设计源码70468
  3. 学习笔记 | Android Studio安卓开发入门经验总结 干货
  4. 爱快路由器新建FTP服务
  5. idea使用svn(日常使用)
  6. 习题6-7 简单计算器(20 分)
  7. 连接上无线网信号没有网络连接到服务器,无线网络连接上但上不了网怎么办? | 192路由网...
  8. Fusiello极线校正方法的原理及C++实现
  9. HTML+CSS实现荧光效果
  10. pytorch 梯度累积(gradient accumulation)