将更少的参数传递给函数,然后在 Python 中定义

Passing less argument to function then defined in Python

如果我有一个具有多种功能的函数,比方说,计算面积或将三个数字相加。 用户通过input

选择1用于计算面积,2用于相加
def func_calculate(numberOne, numberTwo, numberThree, userChoise):
    if userChoise == "1":
        calculate Area
        do something
    if userChoise == "2":
        calculate addition
        do something

userChoise 是用户的输入

如果用户想要计算面积,函数只有两个参数而不是三个,如果用户想要添加。

所以,终于到了问题... 怎样处理最合适?

当我调用该函数时,当用户想要计算面积时,我应该只将 numberThree 变量设置为零还是什么,或者这是更“正确”的方法吗?

if userChoie == "1":    
    inputNumberOne = input(...
    inputNumberTwo = input(...
    inputNumberThree == 0 
    func_calculate(inputNumberOne, inputNumberTwo, inputNumberThree, userChoise)

解决这个问题的一个好方法是拥有多个功能,每个功能都有特定的作用。您可以创建两个单独的函数 calculate_area()add_numbers()。然后,您可以简单地检查输入并像这样调用这些函数:

userChoice = input("Enter choice: ")
if userChoice == "1":
    inputNumberOne = input("Enter number 1: ")
    inputNumberTwo = input("Enter number 2: ")
    calculate_area(inputNumberOne, inputNumberTwo)
elif userChoice == "2":
    inputNumberOne = input("Enter number 1: ")
    inputNumberTwo = input("Enter number 2: ")
    inputNumberThree = input("Enter number 3: ")
    add_numbers(inputNumberOne, inputNumberTwo, inputNumberThree)

如果你真的想只使用一个参数数量可变的函数,你可以使用 *args 作为参数。例如:

def funct_calculate(*args):
    if len(args) == 2:
        Calculate Area
    else:
        Addition

funct_calculate(radius,pi)
funct_calculate(number1,number2,number3)

如果你不想执行多个操作,最好为不同的操作设置不同的函数

choice = input("what user want's to do")

if choice == 1:
     add()
elif choice == 2: 
     multiply()

然后从用户那里为该操作获取参数,例如

def add():
      num1 = input("num1")
      num2 = input("num2")
      num3 = input("num3")
      print(num1 + num2 + num3)

其他操作也类似

但如果你不想拥有多个功能,你可以做到

def func(choice):
    #choice is the integer which user opted
    if choice == 1:
          num1 = input("num1")
          num2 = input("num2")
          num3 = input("num3")
          print(num1 + num2 + num3)
    elif choice == 2:
          .........