iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中怎么通过函数名调用函数
  • 247
分享到

python中怎么通过函数名调用函数

2023-06-15 09:06:21 247人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python中怎么通过函数名调用函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、通过eval实现 常用内置函数(不用import就可以直接使用) :help(obj) 在线帮助, ob

这篇文章主要介绍python中怎么通过函数名调用函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、通过eval实现

 常用内置函数

(不用import就可以直接使用) :

  • help(obj) 在线帮助, obj可是任何类型

  • callable(obj) 查看一个obj是不是可以像函数一样调用

  • repr(obj) 得到obj的表示字符串,可以利用这个字符串

  • eval重建该对象的一个拷贝

  • eval_r(str) 表示合法的Python表达式,返回这个表达式

  • dir(obj) 查看obj的name space中可见的name

  • hasattr(obj,name) 查看一个obj的name space中是否有name

  • getattr(obj,name) 得到一个obj的name space中的一个name

  • setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object

  • delattr(obj,name) 从obj的name space中删除一个name vars(obj) 返回一个object的name

  • space。用dictionary表示

  • locals() 返回一个局部name space,用dictionary表示

  • globals() 返回一个全局name space,用dictionary表示

  • type(obj) 查看一个obj的类型

  • isinstance(obj,cls) 查看obj是不是cls的instance

  • issubclass(subcls,supcls) 查看subcls是不是supcls的子类

1.通过eval调用同一个类内的函数 eval()使用原因:

1)在编译语言里要动态地产生代码,基本上是不可能的,但动态语言是可以,意味着软件已经部署到服务器上了,但只要作很少的更改,只好直接修改这部分的代码,就可立即实现变化,不用整个软件重新加载。

2)在Machin learning里根据用户使用这个软件频率,以及方式,可动态地修改代码,适应用户的变化。

eval()函数

eval(expression[, globals[, locals]])
  • expression – 表达式。

  • globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

  • locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回传入字符串的表达式的结果

class TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "self.be_called_function()",        }        pass    def active_call_function(self):        print("here is active_call_function.")        be_called_function_name = self.config_dict["be_called_function_name"]        # 就直接调用。如果有其他参数,一样地传就好了        # 另外也可以是"be_called_function_name"是"be_called_function",然后eval(be_called_function_name)()        eval(be_called_function_name)        pass    def be_called_function(self):        print("here is be_called_function.")if __name__ == "__main__":    obj = TestA()    obj.active_call_function()

2.通过eval调用同一个文件内的一级函数

class TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "be_called_function()",        }        pass    def active_call_function(self):        print("here is active_call_function.")        be_called_function_name = self.config_dict["be_called_function_name"]        # 就直接调用。如果有其他参数,一样地传就好了        # 另外也可以是"be_called_function_name"是"be_called_function",然后eval(be_called_function_name)()        eval(be_called_function_name)        passdef be_called_function():    print("here is be_called_function.")if __name__ == "__main__":    obj = TestA()    obj.active_call_function()

二、通过getattr实现

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

getattr(object, name[, default])
  • object – 对象。

  • name – 字符串,对象属性。

  • default – 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

getattr(object, name) = object.name
getattr(a, ‘b')的作用就和a.b是一样的

示例:

result = obj.method(args) // 使用getattrfunc = getattr(obj, "method")result = func(args)// 或者写成一行result = getattr(obj, "method")(args)

主要有两种异常,异常的安全用法:
AttributeError:对象中没有该属性。

try:    func = getattr(obj, "method")except AttributeError:    ...... dealelse:    result = func(args) // 或指定默认返回值func = getattr(obj, "method", None)if func:    func(args)

TypeError: 不可调用

func = getattr(obj, "method", None)if callable(func):    func(args)

1.通过函数名调用同一个类内的函数

class TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "be_called_function",        }        pass    def active_call_function(self):        print("here is active_call_function.")        # getaattr(module_name, function_name),module_name传self即可        be_called_function = getattr(self, self.config_dict["be_called_function_name"])        # 就直接调用。如果有其他参数,一样地传就好了        be_called_function()        pass    def be_called_function(self):        print("here is be_called_function.")if __name__ == "__main__":    obj = TestA()    obj.active_call_function()

2.通过函数名调用其他类的函数

class TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "be_called_function",        }        pass    def active_call_function(self):        print("here is active_call_function.")        # getaattr(module_name, function_name),module_name传被调用的函数所在的类的类实例        testb_obj = TestB()        be_called_function = getattr(testb_obj, self.config_dict["be_called_function_name"])        # 就直接调用。如果有其他参数,一样地传就好了        be_called_function()        passclass TestB:    def be_called_function(self):        print("here is be_called_function.")if __name__ == "__main__":    obj = TestA()    obj.active_call_function()

3.通过函数名调用同文件的一级函数

import sysclass TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "be_called_function",        }        pass    def active_call_function(self):        print("here is active_call_function.")        # getaattr(module_name, function_name),module_name传当前模块名        module_name = sys.modules['__main__']        be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])        # 就直接调用。如果有其他参数,一样地传就好了        be_called_function()        passdef be_called_function():    print("here is be_called_function.")if __name__ == "__main__":    obj = TestA()    obj.active_call_function()

4.通过函数名调用在其他文件的一级函数

class TestA:    def __init__(self):        self.config_dict = {            "be_called_function_name": "be_called_function",        }        pass    def active_call_function(self):        print("here is active_call_function.")        # getaattr(module_name, function_name),module_name传函数所在模块名        # __import__()传函数所在文件        module_name = __import__("test_call_function_by_string1")        be_called_function = getattr(module_name, self.config_dict["be_called_function_name"])        # 就直接调用。如果有其他参数,一样地传就好了        be_called_function()        passif __name__ == "__main__":    obj = TestA()    obj.active_call_function()

以上是“python中怎么通过函数名调用函数”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: python中怎么通过函数名调用函数

本文链接: https://www.lsjlt.com/news/279288.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python中怎么通过函数名调用函数
    这篇文章主要介绍python中怎么通过函数名调用函数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、通过eval实现 常用内置函数(不用import就可以直接使用) :help(obj) 在线帮助, ob...
    99+
    2023-06-15
  • python通过函数名调用函数的几种方法总结
    一、通过eval实现  常用内置函数 (不用import就可以直接使用) : help(obj) 在线帮助, obj可是任何类型 callable(obj...
    99+
    2024-04-02
  • 怎么调用Python递归函数与匿名函数
    这篇文章主要讲解了“怎么调用Python递归函数与匿名函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么调用Python递归函数与匿名函数”吧!一. 递归函数  a) 引言:在一个函数中...
    99+
    2023-06-02
  • Python匿名函数/排序函数/过滤函数
    一. lamda匿名函数   为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n**n print(f(...
    99+
    2023-01-31
    函数 Python
  • Python中怎么调用函数
    Python中怎么调用函数,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。函数function是什么?函数的作用函数是可以实现一些特定功能的小方法或是小程序。在Python中...
    99+
    2023-06-19
  • Python如何通过函数获取列名
    在Python中利用函数获取列名的方法利用columns函数获取print(data.columns.values)利用list函数获取print(list(data)) 利用tolist函数获取print(data.columns.tol...
    99+
    2024-04-02
  • 怎么在python中调用函数
    这篇文章将为大家详细讲解有关怎么在python中调用函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎...
    99+
    2023-06-14
  • 如何通过函数指针调用自定义 PHP 函数?
    函数指针是 php 中的数据类型,用于动态调用函数,无需明确指定函数名。要声明函数指针,请使用 $functionpointer = 'function_name' 语法。要调用函数指针...
    99+
    2024-04-22
    php 函数指针
  • vue中怎么通过函数传参数
    本文小编为大家详细介绍“vue中怎么通过函数传参数”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue中怎么通过函数传参数”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue通过函数传参数一,通过点击事件本身的...
    99+
    2023-07-05
  • Python技巧匿名函数、回调函数和高阶函数
    目录1、定义匿名或内联函数 2、在匿名函数中绑定变量的值 3、让带有n个参数的可调用对象以较少的参数调用 4、在回调函数中携带额外的状态 1、定义匿名或内联函数 如果我们想提供一个...
    99+
    2024-04-02
  • Python 函数调用&定义函数&函数参
    一.函数调用 在python中内置了很多函数,我们可以直接调用 。想要调用函数首先要知道函数的名称及包含的参数,还可以通过查看python官方的文档:https://docs.python.org/3/library/functions....
    99+
    2023-01-30
    函数 定义 Python
  • 怎么在python中调用fork()函数
    怎么在python中调用fork()函数?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、...
    99+
    2023-06-14
  • 通过函数如何同时调用多个python文件
    使用sys.modules函数实现同时调用多个python文件的方法首先,在python项目中导入sys模块和需要调用的.py文件;import sysimport task1import task2import task3import t...
    99+
    2024-04-02
  • 如何调试通过网络调用的 Golang 函数?
    如何调试通过网络调用的 golang 函数?有以下两种方法:使用日志记录:添加 log.printf 语句以记录函数调用、返回结果或错误。使用跟踪:启用 -tags go.net.tra...
    99+
    2024-04-17
    调试 golang
  • python怎么从函数库中调用pi
    python从函数库调用pi,具体方法如下:import sysimport mathdefmain(argv):iflen(argv) !=1:sys.exit('Usage: calc_pi.py ')print'\nComputing...
    99+
    2024-04-02
  • C++中怎么调用python脚本函数
    本篇文章给大家分享的是有关C++中怎么调用python脚本函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C++调用python脚本函数代码如下:Py_Initialize(...
    99+
    2023-06-17
  • Python的递归函数与匿名函数调用方法是什么
    本篇内容主要讲解“Python的递归函数与匿名函数调用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的递归函数与匿名函数调用方法是什么”吧!一. 递归函数  a) 引言:在...
    99+
    2023-06-01
  • Python中的回调函数怎么使用
    本文小编为大家详细介绍“Python中的回调函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python中的回调函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。摘要主要是介绍python 的...
    99+
    2023-07-02
  • Python函数递归怎么调用
    本篇内容介绍了“Python函数递归怎么调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!函数递归调用介绍...
    99+
    2024-04-02
  • c++中函数怎么调用
    c++ 中的函数调用涉及以下步骤:定义函数。在使用位置声明函数。使用函数名及其参数调用函数。根据需要选择参数传递方式(值传递或引用传递)。 如何在 C++ 中调用函数 C++ 中的函数...
    99+
    2024-05-01
    c++
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作