python 函数传参机制与使用方法

  • Post category:Python

Python 函数传参机制与使用方法

函数是 Python 程序中最重要的模块之一,函数能帮助我们减少代码的重复率。在 Python 中,函数传参机制有两种方式:传值调用(call by value)和传址调用(call by reference)。

传值调用

传值调用是一种传值的函数参数传递机制,即将实际参数的值传递给函数参数,此时在函数中,参数值不会影响实际参数值。下面是一个传值调用的示例代码:

def change_value(num):
    num = 5

value = 10
change_value(value)
print(value)  # 输出结果为 10

在调用 change_value 函数时,实参 value 的值被传递给了形参 num,并在函数内部被修改。但是,在程序运行到 print(value) 时,value 的值没有改变,仍然输出为 10。

传址调用

传址调用是一种传对象地址的函数参数传递机制,即将实际参数的地址传递给函数参数,此时在函数中修改参数值,会影响实际参数值。下面是一个传址调用的示例代码:

def change_list(lst):
    lst[0] = 10

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

在调用 change_list 函数时,实参 my_list 的地址被传递给了形参 lst,函数内部修改了 lst[0] 的值,由于实参和形参指向同一地址,因此 my_list[0] 的值也被改变。

函数使用方法

Python 函数的定义格式如下:

def function_name(arg1, arg2, ...):
    # 函数体
    return result

其中,function_name 表示函数名,arg1、arg2 表示函数的参数,用逗号隔开,函数体表示函数执行的代码块,result 表示函数执行后的返回值。

函数的调用格式如下:

result = function_name(arg1, arg2, ...)

其中,function_name 表示函数名,arg1、arg2 表示函数的参数,用逗号隔开,result 表示函数执行后的返回值。

Python 中还有一种默认参数的定义方式,如下所示:

def function_name(arg1, arg2, default_arg1=1, default_arg2=2):
    # 函数体
    return result

其中,default_arg1 和 default_arg2 是函数的默认参数,函数调用时如果没有传入这些参数,则会使用默认值 1 和 2。

默认参数和位置参数可以一起使用,但是默认参数必须放在位置参数后面。

示例代码:

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

say_hello("Tom")  # 输出结果为 "Hello Tom"
say_hello("Tom", "Hi")  # 输出结果为 "Hi Tom"

在上面的代码中,message 是函数的默认参数,当调用函数时没有传入 message 的值时,默认使用 “Hello”,当调用函数时传入了 message 的值时,使用传入的值。

参数传递方式的选择

在实际编程中,参数传递方式的选择应根据具体情况而定。如果函数只需要使用函数参数值进行计算,而不需要改变实参的值,则应该使用传值调用。如果函数需要修改实参的值,则应该使用传址调用。

在 Python 中,由于所有对象都是引用传递,因此可以使用传址调用,但是传值调用也是一种很有效的方式,特别是在处理不可变对象时。