python - python有没有办法记住脚本中执行的最后一个函数,然后再次调用它?
问题描述
假设我有两个功能:
def a(name = None):
return "Hello " + name
def b(say = "something"):
return "I will say " + say
现在,这些功能的作用大多无关紧要。我只想知道是否有一种方法可以实现一个repeat()
函数,该函数将重复a()
或者b()
取决于最后执行的函数。
先感谢您!
解决方案
您可以使用装饰器来实现
latest = None
latest_args = None
latest_kwargs = None
def my_decorator():
def decorate(func):
def wrapper(*args, **kwargs):
global latest
global latest_args
global latest_kwargs
latest = func
latest_args = args
latest_kwargs = kwargs
return func(*args, **kwargs)
return wrapper
return decorate
def repeat():
if latest is None:
raise Exception("cannot call repeat without calling a function first")
return latest(*latest_args, **latest_kwargs)
@my_decorator()
def a(name = None):
return "Hello " + name
@my_decorator()
def b(say = "something"):
return "I will say " + say
print(a("Bob"))
print(repeat())
print(b())
print(repeat())
请注意,这可能不是最好的方法,这只是我想到的第一件事,本质上,每次调用装饰函数时,wrapper()
都会调用它,这将保存函数和参数,并且然后,wrapper()
调用该函数。
推荐阅读
- android - 如何将数据库中的数据传递给微调器
- r - R:如何求项目集的升力?
- python - pip安装后Python看不到包
- python - 如何打开用户输入的 CSV 文件 - python?
- flutter - Flutter googleMap onTap longPress
- java - 如何使用 Java 反射将协议字符串转换为 Spymemcached 协议枚举?
- c# - Nlog 日志位置被代码覆盖,仍然在配置位置发生日志记录
- python - 列之间的减法运算以在数据框中创建新列
- c - 如何根据用户输入的列数显示数字列表?(C程序)
- python - 仅在 Python 散景中显示一个字形的悬停工具提示