Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

简介: Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

问题提出


如何将提取得到的字符串(该字符串且等于函数名),此时该函数名是字符串格式,如何用作函数实现其功能?




代码五种设计思路



T1方法:eval()


通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。


print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')

for func in func_list:

   eval(func)()


T2方法: locals() 和 globals()


是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。


print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')

for func in func_list:

   locals()[func]()

for func in func_list:

   globals()[func]()


 

T3方法:


print('methodcaller方法')

class Foo:

   def do_foo(self):

       print('执行do_foo()函数')

   def do_bar(self):

       print('执行do_bar()函数')

f = Foo()

from operator import methodcaller

methodcaller('do_foo')(f)


T4、方法


print('globals().get')

globals().get('foo')


 

 


T5方法


getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。


print('getattr()方法')

import foo

getattr(foo, 'bar')()


综合


def foo():

   print("foo")

def bar():

   print("bar")

func_list = ["foo","bar"]

#T1方法:eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。eval() 功能强大但是比较危险(eval is evil),不建议使用。

print('eval() 通常用来执行一个字符串表达式,并返回表达式的值。在这里它将字符串转换成对应的函数。')

for func in func_list:

   eval(func)()

#T2方法: locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。

print('locals() 和 globals() 是python的两个内置函数,通过它们可以一字典的方式访问局部和全局变量。')

for func in func_list:

   locals()[func]()

for func in func_list:

   globals()[func]()

 

#T3方法:

print('methodcaller方法')

class Foo:

   def do_foo(self):

       print('执行do_foo()函数')

   def do_bar(self):

       print('执行do_bar()函数')

f = Foo()

from operator import methodcaller

methodcaller('do_foo')(f)

#T4、方法:

print('globals().get')

globals().get('foo')

 

 

#T5方法: getattr() 是 python 的内建函数,getattr(object,name) 就相当于 object.name,但是这里 name 可以为变量。

print('getattr()方法')

import foo

getattr(foo, 'bar')()


相关文章
|
9月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
595 1
|
9月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
486 100
|
9月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
630 99
|
9月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
9月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1469 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
8月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
349 4
|
SQL JSON C语言
Python中字符串的三种定义方法
Python中字符串的三种定义方法
864 2
|
Python
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
600 1
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法
28.从入门到精通:Python3 面向对象 面向对象技术简介 类定义 类对象 类的方法

推荐镜像

更多