【中级软考】函数参数传递传值与传引用的区别(global关键字,函数内定义全局变量)

橙三吉。 提交于 2020-02-27 14:51:51

传值调用最显著的特征就是被调用的函数内部对形参的修改不影响实参的值。
引用调用是将实参的地址传递给形参,使得形参的地址就是实参的地址。

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

参考文章:python实现在函数中修改变量值的方法

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!