Python 函数传参机制:
在 Python 中,函数传参的本质是将数据对象复制到内存中,然后将其传递给函数。因此,Python 函数的参数传递方式主要有两种,分别是传递可变对象和传递不可变对象。
传递可变对象:
当传递可变对象(列表、字典等)时,函数内部对这个可变对象的修改会影响到这个对象本身,因为传递的是对象的引用(即地址),函数内部对对象的修改会直接反映到这个地址上,因此这种传递方式被称为“引用传递”。
代码实例1:
def modify_list(l):
l.append('new_item')
return l
my_list = ['item1', 'item2', 'item3']
print(modify_list(my_list))
print(my_list)
输出结果:
['item1', 'item2', 'item3', 'new_item']
['item1', 'item2', 'item3', 'new_item']
以上代码中,我们定义了一个 modify_list()
函数,该函数的参数是一个可变对象 l
,并在函数内部修改了它的值。在主程序中,我们创建了一个列表 my_list
,将其作为参数传递给 modify_list()
函数,并将返回值打印出来。同时,我们也打印了 my_list
的值,可以发现,在函数内部对 my_list
进行的修改也反映到了主程序中。
传递不可变对象:
当传递不可变对象(数字、字符串、元组等)时,函数内部对这个不可变对象的修改不会影响到这个对象本身,因为传递的是对象的拷贝,只是将这个拷贝传递给了函数,而原对象并没有改变,因此这种传递方式被称为“值传递”。
代码实例2:
def modify_str(s):
s = s + 'new'
return s
my_str = 'string'
print(modify_str(my_str))
print(my_str)
输出结果:
stringnew
string
以上代码中,我们定义了一个 modify_str()
函数,该函数的参数是一个字符串 s
,并在函数内部对它进行了修改。在主程序中,我们创建了一个字符串 my_str
,将其作为参数传递给 modify_str()
函数,并将返回值打印出来。同时,我们也打印了 my_str
的值,可以发现,在函数内部对 my_str
进行的修改并没有影响到主程序中的值。
函数使用方法:
函数定义:
在 Python 中,函数定义的语法如下:
def function_name(arguments):
#函数体
return value
其中,def
是定义函数的关键字,function_name
是函数的名称,arguments
是函数的参数,return
是函数的返回值关键字,value
是返回给调用者的值。
注意:函数的参数可以有多个,在函数定义时,多个参数之间需要用逗号 ,
分隔。
函数调用:
在 Python 中,函数调用的语法如下:
function_name(arguments)
其中,arguments
是传递给函数的参数列表,多个参数之间同样用逗号 ,
分隔。如果函数有返回值,可以将其存储到变量中。
代码实例3:
def add(x, y):
return x + y
result = add(1, 2)
print(result)
输出结果:
3
以上代码中,我们定义了一个 add()
函数,该函数接收两个参数,将它们相加并返回。在主程序中,我们将 add()
函数作为一个表达式使用,并将返回值存储到变量 result
中,最后将 result
的值打印出来。