当前位置: 首页 > 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…...

如何构建自主思考的AI智能体:微软官方完整入门指南

如何构建自主思考的AI智能体&#xff1a;微软官方完整入门指南 【免费下载链接】ai-agents-for-beginners 这个项目是一个针对初学者的 AI 代理课程&#xff0c;包含 10 个课程&#xff0c;涵盖构建 AI 代理的基础知识。源项目地址&#xff1a;https://github.com/microsoft/ai…...

SEO_2024年最有效的SEO策略与核心技巧分享

2024年最有效的SEO策略与核心技巧分享 在数字营销领域&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;始终是网站流量提升的关键。2024年&#xff0c;随着搜索引擎算法的不断更新和用户行为的变化&#xff0c;SEO策略也在不断演变。本文将详细分享2024年最有效的SEO策略与…...

“Token”有了中文名:词元

作者&#xff5c;周雅3月23日&#xff0c;在中国发展高层论坛2026年年会上&#xff0c;国家数据局局长刘烈宏正式给出Token 的中文名——「词元」。如果只把这件事理解为一次术语翻译&#xff0c;可能会低估它。更值得注意的是&#xff0c;刘烈宏同时给了「词元」一个更明确的产…...

5大核心功能全面解析:无名杀网页版三国杀完整解决方案

5大核心功能全面解析&#xff1a;无名杀网页版三国杀完整解决方案 【免费下载链接】noname 项目地址: https://gitcode.com/GitHub_Trending/no/noname 无名杀是一款功能完整、完全免费的开源网页版三国杀游戏&#xff0c;为玩家提供随时随地的三国杀对战体验。这款专业…...

FPGA新手必看:Vivado 2018.3从Verilog代码到比特流下载全流程避坑指南

FPGA开发实战&#xff1a;Vivado 2018.3全流程深度解析与避坑手册 刚接触Xilinx FPGA开发的工程师们&#xff0c;往往会被Vivado这个庞然大物吓到——复杂的界面、繁琐的流程、突如其来的报错&#xff0c;每一步都可能成为项目推进的绊脚石。本文将带你深入Vivado 2018.3的开发…...

如何通过Excel表格可视化实现AI算法的直观理解

如何通过Excel表格可视化实现AI算法的直观理解 【免费下载链接】ai-by-hand-excel 项目地址: https://gitcode.com/gh_mirrors/ai/ai-by-hand-excel 面向AI学习者的可视化数学原理学习工具 当你第一次接触Transformer或LSTM等AI算法时&#xff0c;是否曾被复杂的数学公…...

Coze-Loop在金融风控中的应用:实时交易监测系统

Coze-Loop在金融风控中的应用&#xff1a;实时交易监测系统 1. 引言 想象一下这样的场景&#xff1a;一家大型银行的交易系统每秒处理着成千上万笔交易&#xff0c;突然出现了一笔异常大额转账&#xff0c;收款账户来自高风险地区。传统的风控系统可能需要几分钟才能识别这个…...

REX-UniNLU系统体验:从部署到分析,一站式中文语义理解

REX-UniNLU系统体验&#xff1a;从部署到分析&#xff0c;一站式中文语义理解 1. 为什么选择REX-UniNLU进行中文语义分析&#xff1f; 在当今信息爆炸的时代&#xff0c;中文文本处理需求呈现爆发式增长。传统NLP解决方案往往面临三大痛点&#xff1a; 多模型拼接&#xff1…...

深度解析Java线程池:原理、配置、实战避坑与面试全考点

在Java并发编程中&#xff0c;线程池是继锁升级、死锁之后&#xff0c;又一个“中高级面试必问重难点”&#xff0c;更是高并发系统的“性能基石”。很多开发者在开发中会用线程池&#xff0c;但大多停留在“Executors.newFixedThreadPool()”的表面用法&#xff0c;不懂底层原…...

从原理图到DTS:详解RK平台USB-PHY的配置与调试

1. 从原理图到DTS&#xff1a;RK平台USB-PHY配置全流程 刚拿到一块RK3399开发板时&#xff0c;我发现USB接口死活识别不了U盘。作为嵌入式老鸟&#xff0c;我第一反应就是检查DTS配置。USB问题排查就像破案&#xff0c;得从硬件原理图这个"案发现场"开始&#xff0c;…...