欢迎访问宙启技术站
智能推送

Python函数中的参数是什么,如何使用?

发布时间:2023-06-21 19:16:11

Python函数中的参数指的是在函数定义当中,用括号括起来的变量。参数可以让我们在调用函数的时候向函数内部传递数据,这个数据可以用来作为函数运算的输入或者是控制函数行为的开关。

Python中有四种不同的参数类型,他们分别是:

**1. 必需参数**

必须参数被称作"必需参数",这意味着在调用函数时必须传递该参数。在函数定义中,必需参数放在最前面,调用该函数时必须传入跟函数定义中位置对应的参数值,否则将会抛出 TypeError 异常。

例如:

def greet(name):
    print("Hello,", name)
    
greet("Alice")

在这个例子中,"name" 这个参数是必须的,因为 greet() 函数需要一个名字来打招呼。如果我们在调用函数时没有传递name参数,那么就会抛出 TypeError 异常,如下所示:

greet()
# TypeError: greet() missing 1 required positional argument: 'name'

**2. 关键字参数**

关键字参数是指在传递参数的时候,通过指定参数名字来进行传递的一种方法。这种方式比必需参数更加灵活,可以任意顺序传递参数,而且可以跳过不存在的参数。

例如:

def greet(name, age):
    print("Hello, my name is", name, "and I am", age, "years old")
    
greet(age=25, name="Bob")

在这个例子中,我们调用 greet() 函数时使用了关键字参数。通过给参数传递名字,我们可以在任意顺序下传递参数值,而不必在乎它们的位置。

**3. 默认参数**

默认参数是指在函数定义时设置的参数值,这些参数可以在调用函数时被省略。它们的值是函数定义里声明的默认值。在函数定义中,必需参数和关键字参数放在前面,而默认参数放在后面,在调用函数时,如果不传递参数,默认参数取默认值。

例如:

def greet(name, age=18):
    print("Hello, my name is", name, "and I am", age, "years old")
    
greet("Alice")
greet("Bob", 25)

在这个例子中,我们定义了一个有默认参数的函数 greet()。当我们调用 greet() 函数的时候,实参可以忽略掉默认值,或者根据需要更新默认参数的值。如果我们在调用函数时只传递了一个参数,那么 age 的值将会是默认值 18。

执行结果如下:

Hello, my name is Alice and I am 18 years old
Hello, my name is Bob and I am 25 years old

**4. 可变参数**

在Python中,还有一种参数类型是可变参数。可变参数指的是在函数定义时没有指明参数个数的参数,这种参数可以接收任意个数的位置参数和关键字参数。

Python提供了两种方式来定义可变参数:

- *args - 用于传递任意数量的位置参数

- **kwargs - 用于传递任意数量的关键字参数

例如:

def greet(*names):
    for name in names:
        print("Hello,", name)
    
greet("Alice", "Bob", "John")

在这个例子中,我们定义了一个可变参数的 greet() 函数。使用 *names,我们可以接受任意数量的位置参数并将它们保存在 names 元组中。

执行结果如下:

Hello, Alice
Hello, Bob
Hello, John

再看一个具体的例子:

def sum(a, b, *args, **kwargs):
    result = a + b
    for arg in args:
        result += arg
    for key in kwargs:
        result += kwargs[key]
    return result

print(sum(1, 2, 3, 4, c=1, d=2))
# 输出:11

在这个例子中,我们定义了一个包含 a,b,*args 和 **kwargs 参数的函数 sum()。这里 args 和 kwargs 分别代表接受任意数量的位置参数和关键字参数。

在函数体中,我们首先计算 a 和 b 的和,然后循环处理 args 参数中的元素,将它们全部加进结果中。接着循环处理 kwargs 字典中的键值对,将它们的值也加进结果中。最后返回结果即可。

这个函数可以接受任意数量的位置参数 a,b 和 args,还可以接受任意数量的关键字参数 kwargs,它们都可以随意组合在一起。

在调用函数时,我们传递了五个参数:1,2,3,4,c=1,d=2。其中,1,2 是 a 和 b 的值,3,4 是 args 参数中的元素,而 c=1,d=2 则是 kwargs 参数中的键值对。

需要注意的是当同时使用位置参数、关键字参数、默认参数,以及可变参数时,它们之间的顺序必须是该顺序。

总之,无论是必需参数、关键字参数、默认参数、还是可变参数,它们都是 Python 函数中重要的元素。使用不同的参数类型,可以让我们设计出更加灵活和有用的函数,帮助我们更好地解决实际的问题。