Python學習之路:函數傳遞可變參數與不可變參數


函數傳參的方法:

  太基礎了,8說了

  直接上重點

 

一、可變參數的傳遞

  可變參數有:列表、集合、字典

 

直接上代碼:

a = [1, 2]

def fun(a):
    print('傳入函數時a的值為:', a)
    a.insert(2, 3)                                    #修改a
    print('函數改動后a的值為:', a)

fun(a)                                                #調用函數
print('調用函數后全局中a的值為:', a)

結果為:

傳入函數時a的值為: [1, 2]
函數改動后a的值為: [1, 2, 3]
調用函數后全局中a的值為: [1, 2, 3]                       #可以看到函數外部a的值被改變了

結論:

  函數傳遞可變參數時,會將包括索引在內的整體傳遞進去,當函數內部對參數進行修改時,函數外部的參數也會被修改

注:

  這里的修改指的是不會重新創建索引的那種修改,故賦值操作不屬於這種情況

 

二、不可變參數的傳遞

  不可變參數有:數字、字符串、元組

 

上代碼:

a = 1

def fun(a):
    print('傳入函數時a的值為:', a)
    a = 2                                             #這里是通過重新賦值的方法修改,只是為了舉例,畢竟不可變參數沒有真正的修改方法
    print('函數改動后a的值為:', a)

fun(a)                                                #調用函數
print('調用函數后全局中a的值為:', a)

結果為:

傳入函數時a的值為: 1
函數改動后a的值為: 2
調用函數后全局中a的值為: 1                               #可以看到函數外部a的值並沒有改變

 

結論:

  函數傳遞不可變參數時,只傳遞了值,當函數內部對參數進行修改時,其實只是重新創建了一個同名參數,函數對這個同名參數的操作並不會影響到函數外部的參數

 注:

  這里為了舉例使用的是重新賦值的方法,其實在這種情況下即使a是可變參數,全局中的a也不會改變,因為賦值操作會重新建立索引,相當於在函數內重新創建了同名參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM