传值调用最显著的特征就是被调用的函数内部对形参的修改不影响实参的值。
引用调用是将实参的地址传递给形参,使得形参的地址就是实参的地址。
python:
和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。
实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,
就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,
就不能直接修改原始对象--相当于通过“传值’来传递对象。
例如:
传递数字时,在函数内部是不能改变它在外部的值的,但是若传的是列表之类的,在函数内部可以调用列表方法来改变它外部的值(但是使用“=”赋值也是没法改变的)
def fo1(num):
num=2
print(num) # 2
def fo2(list):
list.append(4) # 使用列表方法可以改变它
list=[4,5,6]
print(list) # list=[4,5,6]
if __name__ == "__main__":
num=1
list1=[1,2,3]
fo1(num)
print(num) # 1
fo2(list1)
print(list1) # [1, 2, 3, 4]
在函数内使用global关键字可以更改外部的值:
def fo1(num):
global num1
num1=num+1
print(num1) # 2
if __name__ == "__main__":
num1=1
fo1(num1)
print(num1)
结果:
2
2
来源:CSDN
作者:Dontla
链接:https://blog.csdn.net/Dontla/article/details/104535031