Python按值傳遞參數和按引用傳遞參數


Python按值傳遞參數和按引用傳遞參數:

按值傳遞參數:

使用一個變量的值(數字,字符串),放到實參的位置上

注:傳遞過去的是變量的副本,無論副本在函數中怎么變,變量的值都不變

傳遞常量:

# 傳遞常量

# 定義一個函數,輸出 歡迎,接收到的參數 name
def huanying(name): print("歡迎",name) huanying("小明") # 歡迎 小明



# 定義一個求長方形面積的函數,要求具有返回值且參數為 height 和 width
def area(height,width): return height * width mianji = area(5,4) print(mianji) # 20

傳遞變量:

# 傳遞變量

# 定義一個函數,輸出 歡迎,接收到的參數 name
def huanying(name): print("歡迎",name) strs_name = "小明" huanying(strs_name) # 歡迎 小明



# 定義一個求長方形面積的函數,要求具有返回值且參數為 height 和 width
def area(height,width): return height * width height = 5 width = 4 mianji = area(height,width) print(mianji) # 20

按引用傳遞:

輸出 列表、元組 和 集合所有元素的總和

# 按引用傳遞
 lst = [1,2,3,4] tuple_1 = (4,5,7) se = {9,6,5,8} def add(args): '''將 args 中的元素總和輸出'''
    print(sum(args)) add(lst) # 10
add(tuple_1) # 16
add(se) # 28

# 輸出程序的注釋
print(add.__doc__) # 將 args 中的元素總和輸出

使用函數,將參數引用傳遞輸出參數中的奇數

# 按引用傳遞
 lst = [1,2,3,4] tuple_1 = (4,5,7) def jishu(args): '''將 args 中的奇數輸出'''
    for i in range(len(args)): if args[i] % 2 == 1: print(args[i], end = " ") print() jishu(lst) # 1 3 
jishu(tuple_1) # 5 7 

# 輸出程序的注釋
print(jishu.__doc__) # 將 args 中的奇數輸出

 如果參數發生修改

  1.原參數如果為可變類型(列表、集合、字典)則也跟着修改

  2.原參數如果為不可變類型(數字、字符串、元組)則不發生改變

示例:

列表在函數中調用方法,列表本身發生改變

def add_elem(args,string): '''將 lst_num 添加到 args 中''' args.append(string) # args += string
    # args.extend(string)
    # args.insert(len(args),string)

    return args lst = [1,2,3,4] string = "ABC"

print(add_elem(lst,string)) # [1, 2, 3, 4, 'A', 'B', 'C']
print(lst) # [1, 2, 3, 4, 'ABC']

在函數中,如果列表作為實參,形參發生修改時,列表值發生改變

def add_elem(args,string): '''將 lst_num 添加到 args 中''' args[len(args)-1] = string return args lst = [1,2,3,4] string = "ABC"

print(add_elem(lst,string)) # [1, 2, 3, 'ABC']
print(lst) # [1, 2, 3, 'ABC']

2020-02-11

 


免責聲明!

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



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