📜  python 参数 - Python (1)

📅  最后修改于: 2023-12-03 15:04:15.385000             🧑  作者: Mango

Python参数 - Python

Python是一种高级编程语言,具有简单易学、易读易写和可移植性等特点。Python支持很多参数,这些参数可以帮助程序员实现更加灵活、高效的编程。

基本参数

在Python中,最基本的参数是位置参数和关键字参数。

位置参数

位置参数是指按照顺序传递的参数,它们的值会按顺序依次赋给函数定义中的参数。例如:

def greet(name, greeting):
    print(f"{greeting}, {name}!")

greet("John", "Hello") # 输出 "Hello, John!"

在这个例子中,我们把"name"参数和"greeting"参数分别赋值为"John"和"Hello"。这些参数是按照位置传递的,所以"name"参数得到了"John"的值,"greeting"参数得到了"Hello"的值。因此,这个函数会输出"Hello, John!"。

关键字参数

关键字参数是指通过指定参数名称来传递参数值的方式。这样就可以不用按照固定的顺序传递参数。例如:

def greet(name, greeting):
    print(f"{greeting}, {name}!")

greet(greeting="Hello", name="John") # 输出 "Hello, John!"

在这个例子中,我们把"greeting"参数和"name"参数分别赋值为"Hello"和"John"。这些参数是按照关键字传递的,所以"greeting"参数得到了"Hello"的值,"name"参数得到了"John"的值。因此,这个函数会输出"Hello, John!"。

默认参数

默认参数是指在函数定义时就赋予默认值的参数。如果在调用时没有为该参数指定值,则使用默认值。例如:

def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")

greet("John") # 输出 "Hello, John!"
greet("John", "Hi") # 输出 "Hi, John!"

在这个例子中,我们把"greeting"参数赋予默认值"Hello"。这样,如果在调用函数时没有为"greeting"参数指定值,则使用默认值。第一个调用没有指定"greeting"参数的值,因此使用默认值"Hello"。第二个调用指定"greeting"参数的值为"Hi",因此使用该值。因此,第一个调用会输出"Hello, John!",第二个调用会输出"Hi, John!"。

可变参数

可变参数是指可以接受任意个数参数的参数。在Python中,可变参数有两种形式:*args和**kwargs。

*args

*args表示接受任意个数的位置参数。例如:

def greet(*names):
    for name in names:
        print(f"Hello, {name}!")

greet("John", "Tom", "Alice") # 输出 "Hello, John!"、"Hello, Tom!"、"Hello, Alice!"

在这个例子中,我们把*names作为参数传递给函数。这样,函数就可以接受任意个数的位置参数,它们会被打包成一个元组(tuple)传递给函数。在函数中,我们使用for循环遍历元组(tuple),并打印每个值,输出"Hello, John!"、"Hello, Tom!"、"Hello, Alice!"。

**kwargs

**kwargs表示接受任意个数的关键字参数。例如:

def greet(**names):
    for key, value in names.items():
        print(f"{key} says hello to {value}!")

greet(John="Tom", Alice="Tom") # 输出 "John says hello to Tom!"、"Alice says hello to Tom!"

在这个例子中,我们把**names作为参数传递给函数。这样,函数就可以接受任意个数的关键字参数,它们会被打包成一个字典(dict)传递给函数。在函数中,我们使用for循环遍历字典(dict),并打印每个键值对,输出"John says hello to Tom!"、"Alice says hello to Tom!"。

示例代码
def greet(name, greeting="Hello", *friends, **enemies):
    print(f"{greeting}, {name}!")
    for friend in friends:
        print(f"Hello, {friend}!")
    for key, value in enemies.items():
        print(f"{key} says hello to {value}!")
        
greet("John") # 输出 "Hello, John!"
greet("John", "Hi") # 输出 "Hi, John!"
greet("John", "Hi", "Tom", "Alice", Ann="Bob", Tim="Tom") # 输出 "Hi, John!"、"Hello, Tom!"、"Hello, Alice!"、"Ann says hello to Bob!"、"Tim says hello to Tom!"

以上代码展示了如何定义一个包含默认参数、可变位置参数和可变关键字参数的函数。在函数定义中,我们先定义了一个必须的位置参数"name"和一个默认参数"greeting"。然后,我们使用*friends接受任意个数的位置参数,使用**enemies接受任意个数的关键字参数。在函数体中,我们打印"greeting"、"name"和所有位置参数的值,打印所有关键字参数的键和值。

在第一个调用中,我们只传递了必须的位置参数"name",其他参数都使用了默认值。在第二个调用中,我们指定了"greeting"参数的值为"Hi",其他参数使用默认值。在第三个调用中,我们指定了除了必须的"name"参数外的所有参数,使用了位置参数和关键字参数。可以看到这个函数非常灵活,可以适应不同的调用方式。