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]())
来调用第一个函数并打印结果~
python中globals_Python 中 globals() 函数的使用相关推荐
- python中locals函数_python中locals和globals函数
首先,是关于名字空间的一个名词解释.是枯燥,但是很重要,所以要耐心些.Python使用叫做名字空间的东西来记录变量的轨迹.名字空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上, ...
- python 实例方法调用时可以忽略第一个参数_盘点Python中易忽略的函数
Python 内置函数 1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数, ...
- python中的内置函数怎么学_python内部函数学习(九)
python提供了很多的内置函数,这些内置的函数在某些情况下,可以起到很大的作用,而不需要专门去 写函数实现XX功能,直接使用内置函数就可以实现,下面分别来学习内置函数的使用和案例代码. 1.abs( ...
- python nums函数_Python中的内置函数
Python中有很多内置函数,不需要我们调用模块可以直接使用,而且都是常用函数的封装,下面我们来看看Python中的内置函数都有那些. 1.abs() abs()是绝对值函数,把一个负数转化为正数,数 ...
- Python——内置模块中的内置函数
内置模块中的内置函数 我们在安装好了 Python 配置文件后,也将 Python 本身带有的库也安装好了,Python 自带的库也叫做 Python的内置模块. Python 的内置模块是 Pyth ...
- python中的内置函数
前言 本人只在csdn写博客 内置函数 介绍 一. 数学运算 abs()求绝对值函数 round() 近似取值 pow()求指数 divmod()求商和余数 max()求最大值和min()求最小值 s ...
- python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...
参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...
- python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD)
python使用statsmodels包中的robust.mad函数以及pandas的apply函数计算dataframe中所有数据列的中位数绝对偏差(MAD.Median Absolute Devi ...
- 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) 目录
最新文章
- 牛客网——求平均年龄(水题)
- POJ 1091 跳蚤
- hibernate.hbm.xml详解
- 用户密码重设对EFS的影响
- python安装Selenium,配置ChromeDriver
- 服务器放在机柜_机架式服务器和塔式服务器有区别吗
- 云视通手机下载的文件存储位置_小白版丨IPFS网络怎么存储、下载文件?怎么托管网站?...
- Silverlight 2 中简单的2.5D控件
- linux+ipv6免流量下载,如何限定apt-get使用IPv4或IPv6协议下载
- javascript查看详情与收起详情
- java模板beetl引擎,Beetl java模板引擎
- 163邮箱如何注册呢?
- 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
- Talk预告 | 上海交通大学计算机系博士生李杰锋方浩树:多人场景,全身136关键点检测与跟踪框架AlphaPose技术讲解
- 中国文化产业基地(园区)前景预测和发展战略规划建议报告2021年版
- 广义表的存储结构--头尾链表存储表示/扩展线性链表存储表示
- Springboot项目全局异常统一处理
- 认知网络知识点及例题总结
- linux扩展堆函数,linux下进程堆栈下溢出判断及扩展实现
- java实现第六届蓝桥杯立方体自身
热门文章
- pregel 与 spark graphX 的 pregel api
- 网络安全宣传小程序计算机毕业设计源码70468
- 学习笔记 | Android Studio安卓开发入门经验总结 干货
- 爱快路由器新建FTP服务
- idea使用svn(日常使用)
- 习题6-7 简单计算器(20 分)
- 连接上无线网信号没有网络连接到服务器,无线网络连接上但上不了网怎么办? | 192路由网...
- Fusiello极线校正方法的原理及C++实现
- HTML+CSS实现荧光效果
- pytorch 梯度累积(gradient accumulation)