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

Python函数参数传递方式及注意事项

发布时间:2023-06-22 18:13:40

Python中函数参数传递方式有四种,分别是传值调用、传址调用、可变长参数和关键字参数。下面我们来逐一分析。

1. 传值调用

在 Python 中,数据类型可以分为可变数据类型和不可变数据类型。不可变数据类型包括数字、字符串和元组,而可变数据类型包括列表、字典和集合。在传值调用中,函数参数传递的是实参的值,而不是实参本身,即在函数内对参数进行修改,并不会影响到实参。

举个例子:

def foo(a):
    a += 1
    print('参数的值为:', a)

n = 10
foo(n)
print('函数外的值为:', n)

输出结果为:

参数的值为: 11
函数外的值为: 10

可以看出,在函数内部对参数进行修改,并不会影响到实参。

2. 传址调用

在传址调用中,函数参数传递的是实参的地址,在函数内对参数进行修改会影响到实参。

举个例子:

def foo(a):
    a[0] = 'hello'
    print('参数的值为:', a)

s = ['world']
foo(s)
print('函数外的值为:', s)

输出结果为:

参数的值为: ['hello']
函数外的值为: ['hello']

可以看出,在函数内部对参数进行修改,影响到了实参。

3. 可变长参数

在 Python 中,我们可以使用可变长参数来传递不定数量的参数,包括位置参数和关键字参数。

位置参数

位置参数就是使用 *args 来传递不定数量的位置参数,它会将所有的位置参数打包成一个元组传递给函数。

举个例子:

def foo(*args):
    print('参数的值为:', args)

foo(1, 2, 3)
foo(4, 5)

输出结果为:

参数的值为: (1, 2, 3)
参数的值为: (4, 5)

关键字参数

关键字参数就是使用 **kwargs 来传递不定数量的关键字参数,它会将所有的关键字参数打包成一个字典传递给函数。

举个例子:

def foo(**kwargs):
    print('参数的值为:', kwargs)

foo(name='Tom', age=20)
foo(city='Beijing')

输出结果为:

参数的值为: {'name': 'Tom', 'age': 20}
参数的值为: {'city': 'Beijing'}

4. 关键字参数

关键字参数就是指在函数调用时,指定参数的名称和值,这样可以使代码更加可读性强。

举个例子:

def foo(name, age, city):
    print('name:', name)
    print('age:', age)
    print('city:', city)

foo(name='Tom', age=20, city='Beijing')

输出结果为:

name: Tom
age: 20
city: Beijing

注意事项:

1. 传值调用和传址调用的区别需要格外注意,避免在修改参数时产生不必要的错误。

2. 在使用可变长参数或关键字参数时,需要遵守函数调用的规则,传递正确的参数。

3. 在使用关键字参数时,需要确保传递的参数名称和函数定义中的名称相同。

4. 在编写代码时,应该遵循 Python 的命名规范,避免使用中文拼音等不规范的写法。