当前位置: 首页 > news >正文

小笔记:Python 使用字符串调用函数

小笔记:Python中如何使用字符串调用函数/方法?

jcLee95:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343

本文地址https://blog.csdn.net/qq_28550263/article/details/111874476
邮箱 :291148484@163.com

1. 借助 python字典

2. 借助内置的 getattr() 函数

3. 借助内置 locals() 函数来解析出函数名


【简介】 使用字符串调用函数是一个常用的编程技巧,在大型项目中可以用于实现钩子管理系统。本文指在 介绍 两个 python 内置函数,即 getattr 函数 和 locals 函数。

1. 借助 python字典

最简单的办法是通过一个将字符串映射到函数的字典,例如:

def func1():print("func1 was called.")def func2():print("func2 was called.")d = {'f1': func1, 'f2': func2} d['f1']() 

Out[]:

func1 was called.

2. 借助内置的 getattr() 函数

getattr() 函数用于返回一个对象属性值。其语法格式如下:

getattr(object, name[, default])

其中:

参数描述
object对象。
name字符串,对象属性。
default默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError

例如:

import mymodule
getattr(mymodule, 'myFunc')()

Python 内置的 getattr() 函数可用于任何对象,例如类、类实例、模块等等。

通过 getattr() 函数实现按字符串调用函数例如:

class MyClass(object):def method1(self):print("Method 1 was called.")def method2(self):print("Method 2 was called.")my_instance = MyClass()getattr(my_instance, 'method' + "2")()

Out[]:

Method 2 was called.

注:
这个例子中 getattr(my_instance, 'method' + "2") 是一个函数,因此 getattr(my_instance, 'method' + "2")() 效果上相当于:

func = getattr(my_instance, 'method' + "2")
func()

3. 借助内置 locals() 函数来解析出函数名

Python 中内置的 locals() 函数用于以 字典类型 返回当前位置的 全部 局部变量。

locals() 函数 对于 函数、方法、lambda 表达式、类, 以及所有实现了 __call__ 方法的类实例,它都返回 True。

通过 locals() 函数实现按字符串调用函数如:

def myFunc():print("hello")func_name = "myFunc"f = locals()[func_name]
f()

Out[]:

hello

相关文章:

小笔记:Python 使用字符串调用函数

小笔记:Python中如何使用字符串调用函数/方法?jcLee95:https://blog.csdn.net/qq_28550263?spm1001.2101.3001.5343 本文地址:https://blog.csdn.net/qq_28550263/article/details/111874476 邮箱 :291148484163.co…...

红黑树的原理+实现

文章目录红黑树定义性质红黑树的插入动态效果演示代码测试红黑树红黑树 定义 红黑树是一个近似平衡的搜索树,关于近似平衡主要体现在最长路径小于最短路径的两倍(我认为这是红黑树核心原则),为了达到这个原则,红黑树所…...

用于非线性时间序列预测的稀疏局部线性和邻域嵌入(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

使用 Vue3 重构 Vue2 项目

目录前言:一、项目整体效果展示二、项目下载使用方法三、为什么要重构项目四、重构的流程五、步骤中的 bug 以及解决方式六、未解决的问题总结:前言: 2020年9月18日,vue3正式版发布了,前几天学习完成后,我决…...

Hive学习——单机版Hive的安装

目录 一、基本概念 (一)什么是Hive (二)优势和特点 (三)Hive元数据管理 二、Hive环境搭建 1.自动安装脚本 2./opt/soft/hive312/conf目录下创建hive配置文件hive-site.xml 3.拷贝一个jar包到hive下面的lib目录下 4.删除hive的guava,拷贝hadoop下的guava 5…...

uprobe 实战

观测数据源 目前按照我的理解,和trace相关的常用数据源–探针 大致分为四类。 内核 Trace point kprobe 用户程序 USDT uprobe 在用户程序中,USDT是所谓的静态Tracepoint。和内核代码中的Trace point类似。实现方式是在代码开发时,使用USDT…...

华为OD机试 - 求最大数字(Python)| 真题+思路+考点+代码+岗位

求最大数字 题目 给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。 如34533,数字3重复超过2次,需要删除其中一个3,删除第一个3后获得最大数值4533 请返回经过删…...

雨水情测报与大坝安全监测系统

压电式雨量传感器产品概述传感器由上盖、外壳和下盖组成,壳体内部有压电片和电路板,可以固定在外径50mm立柱上和气象站横杆上。传感器采用冲击测量原理对单个雨滴重量进行测算,进而计算降雨量。雨滴在降落过程中受到雨滴重量和空气阻力的作用…...

抖音广告投放形式有哪些?新品牌进入抖音怎么建立口碑

坐拥5亿用户的抖音平台,已经成为各大品牌的兵家必争之地。想要在这块宣传的“高地”,做出声量,就必须了解抖音广告投放形式有哪些。这里整理的这份抖音广告投放指南,你一定不能错过。一、抖音为何如此牛想要弄清楚抖音广告的投放形…...

Beefxss使用教程图文教程(超详细)

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 Beefxss一、首次使用二、修改账号密码三、自带练习页面四、简单使用五、工具界面介绍六、功能演示1、网页重定向2、社工弹窗3、功能颜色标识…...

【Python学习笔记】35.Python3 CGI编程(2)

前言 本章继续介绍Python的CGI编程。 通过CGI程序传递checkbox数据 checkbox用于提交一个或者多个选项数据&#xff0c;HTML代码如下&#xff1a; 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>csdn教程(csd…...

博客等级说明

CSDN 博客等级是按照用户的博客积分数量进行的设定&#xff0c;为 Lv1 至 Lv10 共 10 个等级&#xff0c;不同的等级创作者可以享受到不同的权益待遇。例如&#xff0c;皮肤奖励、自定义域名、客服优先处理、自定义文章标签等特权。您需要提高博客积分进一步提升等级&#xff0…...

STL——容器适配器、deque

一、容器适配器 1.适配器 适配器是一种设计模式&#xff08;设计模式是一套被反复使用的、多数人所知晓的、经过分类编目的、代码设计经验的总结&#xff09;&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 2.STL标准库中stack和queue的底层结构 stack…...

VBA数组和Excel工作表数据传递

本文介绍如何利用 VBA 的数组&#xff08;Array) 来提高 Excel 单元格和外部数据传输的性能。如果数量比较大&#xff0c;通过 Array 来传输数据比直接操作单元格要快若干倍。 将 Range 的数据写入 VBA Array 将 Range 数据写入 VBA 的数组非常简单。下面的例子演示了用法&am…...

PyQt5保姆级入门教程——从安装到使用

目录 Part1&#xff1a;安装PyQt5 Part 2&#xff1a;PyCharm配置PyQt5 Part 3&#xff1a;PyQt5设计界面介绍 Part 4&#xff1a;PyQt5设计UI 今天看了多个大佬的教程&#xff0c;总算是把PyQt5开发弄好了&#xff0c;每个部分都要看几个人的十分不方便&#xff0c;我十分…...

1.6 epoll实战使用

文章目录1、连接池2、epoll两种工作模式2.1、LT模式2.2、ET模式3、后端开发面试题4、epoll验证1、连接池 将每一个套接字和一块内存进行绑定&#xff0c;连接池就是一个结构体数组&#xff0c;通过链表来维护一个空闲连接。 1、ngx_get_connection(int fd)从空闲链表取一个空闲…...

JDK定时、Spring定时、时间轮定时小结

Timer使用一个线程&#xff0c;一个小根堆。线程执行根上的任务&#xff0c;小根堆会根据执行时间戳重新调整&#xff0c;根上的任务是下一个执行的任务。 DelayedQueue维护一个优先级队列&#xff0c;本质也是一个数组方式的堆。任务生成时也有时间戳&#xff0c;只提供存储。…...

关于cFosSpeed如何配置

cFosSpeed配置一、检查Calibration Done情况二、优化Ping时间和线路校准三、测网速四、cFosSpeed控制台五、配置参数一、检查Calibration Done情况 安装完毕&#xff0c;激活成功后。 右键------>选项------>设置&#xff0c; 打开适配器信息&#xff0c;查看Calibra…...

YOLOV5输出的txt里面有什么猫腻(用于图像分类竞赛中提升图像信息密度)

背景概括&#xff1a; kaggle最近举办了一场医学乳腺癌检测的比赛&#xff08;图像分类&#xff09; 比赛官网地址 给的数据是dcm的专业的医学格式&#xff0c;自己通过DICOM库转为png后&#xff0c;发现该图像胸部不同的患者乳腺大小不一&#xff0c;简言之乳腺的CT有效图在…...

vue+axios常用操作

vueaxios常用操作vue2axios请求拦截依赖项http.jsvue2axios设置请求头依赖项http.js获取并设置请求头api.jsa.vuevue2axios请求拦截 依赖项 “vue”: “^2.6.11” “axios”: “^0.21.0” “element-ui”: “^2.13.2”(做弹窗提示&#xff0c;可以不用) http.js // 引入axi…...

[具身智能-636]:什么是语音识别?语音识别的技术过程?语音于语音特征提取?什么环节实现时域到频域的转化?

一、什么是语音识别语音识别 ASR&#xff1a;把人说话的语音声波&#xff08;时域音频&#xff09;&#xff0c;自动转换成文字的技术。本质&#xff1a;时域语音信号 → 机器可懂的语音特征 → 文本。不关心声音多好听&#xff0c;只关心说了什么内容。二、语音识别完整技术流…...

KMS_VL_ALL_AIO:3分钟完成Windows与Office智能激活的终极指南

KMS_VL_ALL_AIO&#xff1a;3分钟完成Windows与Office智能激活的终极指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活而烦恼吗&#xff1f;KMS_VL_ALL_AIO是一款开源智…...

C#调用本地硬件不再难:基于CefSharp WinForm实现Web页面读写身份证/摄像头(避坑指南)

C#混合开发实战&#xff1a;基于CefSharp构建Web与本地硬件交互的桥梁 在政务大厅办理业务时&#xff0c;你是否遇到过这样的场景&#xff1a;网页端填写表单到一半&#xff0c;工作人员突然要求插入身份证读卡器进行身份核验&#xff1f;传统B/S架构应用在这种需要访问本地硬…...

工业级电子封装技术解析与应用实践

1. 嵌入式系统电子封装概述在工业自动化、电信基础设施和军事装备等领域&#xff0c;电子封装(EP)构成了嵌入式系统物理实现的基础框架。不同于消费电子产品的塑料外壳&#xff0c;工业级电子封装是一个包含机械结构、热管理、电磁屏蔽和电气互连的完整技术体系。以典型的VMEbu…...

Vivado携手Modelsim:跨越版本鸿沟的仿真实战指南

1. 为什么需要Vivado与Modelsim联合仿真&#xff1f; 刚接触FPGA开发的朋友可能会疑惑&#xff1a;Vivado明明自带仿真工具&#xff0c;为什么还要折腾第三方工具&#xff1f;这个问题我十年前刚开始用ISE套件时就深有体会。Vivado Simulator虽然集成度高&#xff0c;但存在几…...

基于LangChain.js与AI的思维导图自动生成:开源项目MindGeniusAI深度实践

1. 项目概述&#xff1a;当思维导图遇上AI&#xff0c;一个开源工具的深度实践如果你和我一样&#xff0c;经常需要处理海量的信息、整理复杂的项目思路&#xff0c;或者准备一场重要的汇报&#xff0c;那么思维导图&#xff08;Mind Map&#xff09;绝对是你离不开的工具。它能…...

5分钟掌握ComfyUI_essentials:解锁AI绘画的终极创作工具箱

5分钟掌握ComfyUI_essentials&#xff1a;解锁AI绘画的终极创作工具箱 【免费下载链接】ComfyUI_essentials 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_essentials 还在为ComfyUI中缺少关键功能而烦恼吗&#xff1f;ComfyUI_essentials就是你的终极解决方案…...

3个创意方案:用Sunshine构建你的跨设备游戏串流中心

3个创意方案&#xff1a;用Sunshine构建你的跨设备游戏串流中心 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专为Moonli…...

要想口腔溃疡好的快,认准这个方法 口腔溃疡 硬核健康科普行动 口疮 醋酸地塞米松口腔贴片——这个确实可以止痛,大家觉得呢,还有更好的药物吗?

要想口腔溃疡好的快&#xff0c;认准这个方法 口腔溃疡 硬核健康科普行动 口疮 醋酸地塞米松口腔贴片——这个确实可以止痛&#xff0c;大家觉得呢&#xff0c;还有更好的药物吗&#xff1f; 要想口腔溃疡好的快&#xff0c;认准这个方法 口腔溃疡 硬核健康科普行动 口疮 醋酸地…...

脉冲神经网络与BriSe AI:构建具备自我感知与社会认知的类脑智能

1. 脉冲神经网络&#xff1a;从生物启发的计算模型到类脑智能的基石在人工智能领域&#xff0c;我们一直在寻找一种既能高效处理信息&#xff0c;又能在能耗和生物合理性上更接近人脑的模型。传统的人工神经网络&#xff08;ANN&#xff09;取得了巨大成功&#xff0c;但其连续…...