【中级软考】函数参数传递传值与传引用的区别(global关键字,函数内定义全局变量)
傳值調(diào)用最顯著的特征就是被調(diào)用的函數(shù)內(nèi)部對(duì)形參的修改不影響實(shí)參的值。
引用調(diào)用是將實(shí)參的地址傳遞給形參,使得形參的地址就是實(shí)參的地址。
(對(duì)于python而言,普通的實(shí)參傳個(gè)變量(或常量)進(jìn)去就相當(dāng)于以上說(shuō)的傳值)
python:
和其他語(yǔ)言不一樣,傳遞參數(shù)的時(shí)候,python不允許程序員選擇采用傳值還是傳引用。Python參數(shù)傳遞采用的肯定是“傳對(duì)象引用”的方式。
實(shí)際上,這種方式相當(dāng)于傳值和傳引用的一種綜合。如果函數(shù)收到的是一個(gè)可變對(duì)象(比如字典或者列表)的引用,
就能修改對(duì)象的原始值--相當(dāng)于通過(guò)“傳引用”來(lái)傳遞對(duì)象。如果函數(shù)收到的是一個(gè)不可變對(duì)象(比如數(shù)字、字符或者元組)的引用,
就不能直接修改原始對(duì)象--相當(dāng)于通過(guò)“傳值’來(lái)傳遞對(duì)象。
例如:
傳遞數(shù)字時(shí),在函數(shù)內(nèi)部是不能改變它在外部的值的,但是若傳的是列表之類的,在函數(shù)內(nèi)部可以調(diào)用列表方法來(lái)改變它外部的值(但是使用“=”賦值也是沒(méi)法改變的)
在函數(shù)內(nèi)使用global關(guān)鍵字可以更改外部的值:
def fo1(num):global num1num1=num+1print(num1) # 2if __name__ == "__main__": num1=1fo1(num1)print(num1)結(jié)果:
2 2參考文章:python實(shí)現(xiàn)在函數(shù)中修改變量值的方法
總結(jié)
以上是生活随笔為你收集整理的【中级软考】函数参数传递传值与传引用的区别(global关键字,函数内定义全局变量)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python里有常量吗?(没有,但可自行
- 下一篇: 机器学习中什么是端到端的训练方法(端到端