首页 > 编程知识 正文

Python 参数传递

时间:2023-11-20 08:58:43 阅读:290176 作者:WPVP

本文将从以下几个方面对Python 参数传递做详细阐述:

一、参数传递的基础概念

Python 学习中,参数传递是一个必须掌握的重要概念。简单来说,参数传递是指在函数调用时将实际参数传递给形式参数的过程。

# 定义一个简单的函数,并传递参数
def greeting(name):
    print('Hello, ' + name + '!')

greeting('Tom')

在上面的例子中,我们定义了一个函数greeting,它接受一个参数name,并打印出"Hello, name!" 的结果。在函数调用时,我们传递了参数Tom,实际参数通过形式参数name传递到函数中。

二、Python 中参数传递的方式

Python 中存在两种参数传递的方式:传值和传引用。在 Python 中,对象分为可变对象和不可变对象,可变对象包含列表、字典等,不可变对象包含数字、字符串等。

1、传值

在 Python 中,传值就是将实际参数的值传递给形式参数的过程。对于不可变的数据类型,如数字、字符串、元组等,参数传递的方式是传值。这也就是说,在函数内对形参所做的修改,不会影响到函数外部的实参。

# 传递字符串作为参数的示例 
def change_string(str):
    str = 'Changed String'
    print('函数内值: ', str)

string = 'Hello, world!'
change_string(string)
print('函数外值: ', string)

在上面的代码中,我们定义一个函数change_string,它接受一个字符串类型的参数str,并在函数内部对str变量赋值。当我们调用函数change_string函数时,函数内部的str被赋值为'Changed String'。但是,函数外部的string仍然保留着原先的值'Hello, world!',这说明传递的是参数的值,形参的修改并不会影响到实参。

2、传引用

在 Python 中,传引用就是将实际参数的引用传递给形式参数的过程。对于可变的数据类型,如列表、字典等,参数传递的方式是传引用。这就意味着如果在函数内修改了形参,实参也会受到影响。

# 传递列表作为参数的示例
def change_list(mylist):
    mylist.append([1,2,3,4])
    print('函数内值: ', mylist)

list = [10,20,30]
change_list(list)
print('函数外值: ', list)

在上面的代码中,我们定义一个函数change_list,它接受一个列表类型的参数mylist,并在函数内部对mylist执行了append操作。当我们调用函数change_list函数时,函数内部的mylist向原始列表中添加了一个包含4个数字的新列表。但是,函数外部的list也被修改了,它现在包含了4个元素:[10,20,30,[1,2,3,4]],这说明传递的是变量的引用,形参的修改会影响实参。

三、默认参数

在 Python 中,函数可以接受默认值作为参数,这些默认值可以是必需的或可选的。定义默认值后,函数参数可以在调用时不用传递任何值。

# 带有默认值的函数示例
def print_info(name, age=35):
    print('Name: ', name)
    print('Age: ', age)

print_info('Tom')
print_info('Jerry', 40)

在上面的代码中,我们定义了一个函数print_info,它包含两个参数:name和age。age参数具有默认值35,这意味着可以省略age参数的传递。在函数的第一次调用中,只传递了一个参数name,没有传递age参数,这时函数会使用默认值35。在第二次调用时,传递了两个参数,分别是name和age,这时函数使用传递的参数。

四、可变参数

在 Python 中,函数可以接受任意数量的参数,这些参数可以是位置参数、默认参数或关键字参数。使用可变参数,可以传递不同数量的参数,这对于编写灵活的函数非常有用。

1、位置参数

位置参数就是指不带任何额外符号或名称的参数。在函数中,可以使用*args来接受任意数量的位置参数。

# 使用位置参数的示例
def print_args(*args):
    print('传入的参数: ', args)

print_args('a','b','c')

在上面的代码中,我们定义了一个函数print_args,它使用*args以实现接受任意数量的位置参数。当我们调用函数print_args时,*args收集传入的所有参数并将其打印出来。

2、关键字参数

关键字参数就是指使用关键字传递的参数。关键字参数允许在函数调用时指定函数参数的名称,这会使代码更具可读性。在函数中,可以使用**kwargs来接受任意数量的关键字参数。

# 使用关键字参数的示例
def print_kwargs(**kwargs):
    print('传入的关键字参数: ', kwargs)

print_kwargs(a=1, b=2, c=3)

在上面的代码中,我们定义了一个函数print_kwargs,它使用**kwargs以实现接受任意数量的关键字参数。当我们调用函数print_kwargs时,**kwargs收集传入的所有关键字参数并将其打印出来。

3、混合参数

在函数中也可以混合使用位置参数、关键字参数和默认参数,但是位置参数必须在关键字参数的前面。

# 混合使用参数的示例
def print_people_info(name, age=35, *friends, **kwargs):
    print('Name: ', name)
    print('Age: ', age)
    print('Friends: ', friends)
    print('Other: ', kwargs)

print_people_info('Tom', 25, 'Bob', 'John', location='New York', job='Engineer')

在上面的代码中,我们定义了一个函数print_people_info,它包含一个位置参数name、一个默认参数age、一个可变参数friends以及一个关键字参数**kwargs。当我们调用函数print_people_info时,前两个参数是位置参数,后两个参数分别是可变参数和关键字参数。可变参数会收集传入的位置参数,而关键字参数会收集传入的所有关键字参数。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。