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

Python函数的参数及参数传递方式介绍

发布时间:2023-12-03 03:55:28

Python中的函数参数包括位置参数、默认参数、可变参数和关键字参数,不同参数的传递方式也有不同的特点。

1. 位置参数:

位置参数是按照顺序从左到右传递的,调用函数时需要按照定义的顺序传入参数。示例代码如下:

def add(x, y):
    return x + y

result = add(3, 5)
print(result)  # 输出结果为8

2. 默认参数:

默认参数在函数的定义中可以给定一个默认的值,如果在函数调用时没有传入相应的参数,则会使用默认值。示例代码如下:

def multiply(x, y=2):
    return x * y

result1 = multiply(3, 4)
print(result1)  # 输出结果为12

result2 = multiply(3)
print(result2)  # 输出结果为6

默认参数可以有多个,当有多个默认参数时,调用函数时可以按照指定的顺序传入,也可以使用关键字参数指定传入的值。

3. 可变参数:

可变参数允许传入不定数量的参数,在函数定义时使用***来表示。其中,*用于接收不定数量的位置参数,**用于接收不定数量的关键字参数。示例代码如下:

def sum(*nums):
    total = 0
    for num in nums:
        total += num
    return total

result1 = sum(1, 2, 3, 4, 5)
print(result1)  # 输出结果为15

result2 = sum(1, 2)
print(result2)  # 输出结果为3

在调用函数时,可以传递任意数量的参数,这些参数会被打包成一个元组或字典传递给函数。

4. 关键字参数:

关键字参数允许以名称-值对的形式传递参数,在函数定义时使用**来表示。示例代码如下:

def info(name, age):
    print("姓名:", name)
    print("年龄:", age)

info(name="张三", age=20)

在调用函数时,使用name=value的形式传递参数,可以不按照定义的顺序传递参数,同时还可以只传递部分关键字参数。

在Python中,参数的传递方式有值传递和引用传递两种方式。

1. 值传递:

值传递是指在调用函数时,将实参的值复制给形参,形参和实参是两个独立的变量,它们之间的修改互不影响。示例代码如下:

def change_num(num):
    num = 10

number = 5
change_num(number)
print(number)  # 输出结果为5

在函数change_num中,num被赋值为10,但是并不会影响到外部的number变量。

2. 引用传递:

引用传递是指在调用函数时,将实参的引用(地址)复制给形参,形参和实参指向同一个内存地址,对形参的修改会影响到实参。示例代码如下:

def change_list(lst):
    lst.append(4)

mylist = [1, 2, 3]
change_list(mylist)
print(mylist)  # 输出结果为[1, 2, 3, 4]

在函数change_list中,对lst变量进行操作实际上是对mylist的操作。

需要注意的是,不可变类型的参数(如整数、浮点数、字符串)在函数内部修改后,并不会影响到外部的变量,因为每次对不可变类型的修改都会创建一个新的对象。而可变类型的参数(如列表、字典、集合)则可以在函数内部进行修改,因为对可变类型的修改是在原有对象的基础上进行的。