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

Python中的参数传递和函数调用的方式有哪些?

发布时间:2023-06-26 02:18:38

Python 中的参数传递和函数调用有四种方式:

1. 位置参数传递

位置参数是按照顺序传递的,即 个参数传递给函数中的 个参数,第二个参数传递给函数中的第二个参数,以此类推。位置参数必须传递,否则将会导致语法错误。

示例:

def add(a, b):
    return a + b

print(add(1, 2))

输出:3

在上面的示例中,函数 add() 接受两个位置参数 ab,将它们相加并返回它们的和。在调用函数时,我们按照顺序将 12 作为参数传递给 add() 函数,然后它返回了 3

2. 关键字参数传递

关键字参数是按照名称传递的,即我们可以通过参数名称来传递参数,这样就不需要按照顺序传递参数。关键字参数是可选的,如果我们不传递它们,函数会使用默认值。

示例:

def greet(name, message="Hello"):
    print(message, name)

greet(name="Alice", message="Hi")
greet(name="Bob")

输出:

Hi Alice

Hello Bob

在上面的示例中,函数 greet() 接受两个参数 namemessagemessage 有默认值为 "Hello"。在 次调用函数时,我们使用关键字参数传递了 namemessage,因此它以 Hi Alice 的形式打印出来。在第二次调用中,我们只传递了 name,因此函数使用默认值 "Hello",打印出 Hello Bob

3. 可变参数传递

可变参数是一种能够接受变量数量的参数的特殊类型的参数。如果我们不知道函数需要接受多少个参数,那么我们可以使用可变参数。

在 Python 中有两种类型的可变参数:*args 和 **kwargs。

*args 表示它可以接受任意数量的位置参数。它们被收集到元组中。

示例:

def add(*args):
    result = 0
    for num in args:
        result += num
    return result

print(add(1, 2, 3))
print(add(10, 20, 30, 40, 50))

输出:

6

150

在上面的示例中,函数 add() 接受一个可变数量的位置参数 *args。它们被收集到元组中,并计算它们的和。在 次调用中,它接受三个位置参数并返回它们的和。在第二个调用中,它接受五个参数并返回它们的和。

**kwargs 表示它可以接受任意数量的关键字参数。它们被收集到字典中。

示例:

def show(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

show(name="Alice", age=20, city="New York")

输出:

name Alice

age 20

city New York

在上面的示例中,函数 show() 接受一个可变数量的关键字参数 **kwargs。 它们被收集到字典中,并打印键和值。

4. Lambda 函数

Lambda 函数是一种匿名函数,它通常用于定义一个简短的函数,它只需要在程序中使用一次,并且可以在函数体内定义参数。

示例:

students = [
    {"name": "Alice", "score": 90},
    {"name": "Bob", "score": 80},
    {"name": "Charlie", "score": 70},
]

students.sort(key=lambda x: x["score"], reverse=True)

print(students)

输出:

[{'name': 'Alice', 'score': 90}, {'name': 'Bob', 'score': 80}, {'name': 'Charlie', 'score': 70}]

在上面的示例中,我们使用 lambda 函数作为 sort() 函数的 key 参数来按照学生的成绩进行排序。 lambda x: x["score"] 表示函数接受一个参数 x,然后访问它的 "score" 属性并返回它。