IT科技类资讯

如何在 Python 中调用函数?九种方法任你挑选

时间:2010-12-5 17:23:32  作者:应用开发   来源:域名  查看:  评论:0
内容摘要:1. 直接函数调用这是最简单、最直观的方式:deftest():print("Thisisatest")test() 2. 使用partial()函数在 的内置库中functools,有

1. 直接函数调用

这是何P函数最简单、最直观的中种方方式:

def test():     print("This is a test") test() 

2. 使用partial()函数

在 的内置库中functools,有一个专用于生成偏函数的调用偏函数partial。

def power(x,法任 n):     s = 1     while n > 0:         nn = n - 1         ss = s * x     return s from functools import partial power_2 = partial(power, n=2) power_2(3)  # output: 9 power_2(4)  # output: 16 

3. 使用 eval()

如果需要动态执行函数,可以使用 eval + string 来执行函数。挑选

# demo.py import sys def pre_task():     print("running pre_task") def task():     print("running task") def post_task():     print("running post_task") argvs = sys.argv[1:] for action in argvs:     eval(action)() 

执行:

$ python demo.py pre_task task post_task running pre_task running task running post_task 

4. 使用 getattr()

如果把所有的何P函数函数都放在类中,服务器托管并定义为静态方法,中种方就可以使用getattr()get和调用它们。调用

import sys class Task:     @staticmethod     def pre_task():         print("running pre_task")     @staticmethod     def task():         print("running task")     @staticmethod     def post_task():         print("running post_task") argvs = sys.argv[1:] task = Task() for action in argvs:     func = getattr(task,法任 action)     func() 

5. 使用 __dict__()

我们都知道对象有一个__dict__()魔法方法,它存储任何对象的挑选属性和方法。

您可以调用类方法使用__dict__.get

import sys class Task:     @staticmethod     def pre_task():         print("running pre_task") func = Task.__dict__.get("pre_task") func.__func__() # Output $ python /tmp/demo.py running pre_task 

6. 使用 global()

在 的何P函数内置库中functools,有一个专用于生成偏函数的中种方偏函数partial。

import sys def pre_task():     print("running pre_task") def task():     print("running task") def post_task():     print("running post_task") argvs = sys.argv[1:] for action in argvs:     globals().get(action)() # Output $ python /tmp/demo.py pre_task task post_task running pre_task running task running post_task 

7. 从文本编译和运行

您可以在字符串中定义您的云服务器提供商调用函数,并使用该compile函数将其编译为字节码,法任然后用于exec执行它。挑选

pre_task = """ print("running pre_task") """ exec(compile(pre_task, , exec)) # Or from a text file with open(source.txt) as f:     source = f.read()     exec(compile(source, source.txt, exec)) 

8. 使用attrgetter()

在 的内置库中operator,有一个获取属性的方法,称为attrgetter,获取函数后执行。

from operator import attrgetter class People:     def speak(self, dest):         print("Hello, %s" %dest) p = People() caller = attrgetter("speak") caller(p)("Tony") # Output $ python /tmp/demo.py Hello, Tony 

9. 使用methodcaller()

还有一个methodcaller方法在operator

from operator import methodcaller class People:     def speak(self, dest):         print("Hello, %s" %dest) caller = methodcaller("speak", "Tony") p = People() caller(p) # Output $ python /tmp/demo.py Hello, Tony 源码库
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap