python中是否有一条命令可以让您重新执行刚刚执行的功能?

时间:2019-06-13 22:04:57

标签: python

我正在编写一个通用的数学方程式计算器,该计算器可以计算2D形状的面积/周长,3D形状的表面积/体积,以及我将来决定建立的任何公式。

我正在尝试构建一个函数,使用户可以决定是否要使用已经再次使用的方程式。

如果我在程序的每个部分(我已经尝试过)中创建具有相同目的的函数,那将是低效率的。

def triangledecision():
    print("Input 1 if you would like to calculate the area/perimeter of this shape again")
    print("Input 2 if you would like to return to the 2D shape menu")
    print("Input 3 if you would like to return to the main menu")
    answer = input()

    if answer == "1":
        triangle()

    if answer == "2":
        twodshapes()

    if answer == "3":
        main()

    else:
        while answer != "1" or "2" or "3":
            print("Please select one of the options")
            triangledecision()

此功能按预期工作,但是,我将必须为每个节创建相同的功能,这既耗时又效率低下。

2 个答案:

答案 0 :(得分:1)

您可以使用诸如装饰器之类的方法来实现此目的。我有点困惑您的要求,但是我假设您想要一个可以在所有操作上正常工作的通用函数。我将创建一个重试包装器。

def retry(func):
   def wrapper(*args, **kwargs):
      while True:
         func(*args, **kwargs)
         answer = input('if would you like to calculate the area or perimeter of this shape again, enter 1: ')
         if answer != '1':
            break
      return 
   return wrapper

然后,在函数上使用@retry。例如:

@retry
def square_perimeter():
   #whatever your code is

使用此方法,您可以要求用户重用任何功能,只需使用@retry装饰器对其进行装饰即可。

答案 1 :(得分:0)

在python中,您可以将函数另存为变量(更直观地说,它们是对象)。如下: executedFunction = triangle 要么 executedFunction = twoshapes 然后调用它: executedFunction()