淺談Python中的函數(shù)傳遞問題
函數(shù)參數(shù)如何傳遞
key-value方式傳遞參數(shù):
下面是非常常見的傳遞方式,參數(shù)名寫直白,寫死了:
def show_info(name, title): print("姓名為:",name) print("職稱為:",title)
我們在使用的時候可以用以下的方式:
show_info('雷學(xué)委', '大學(xué)生Python學(xué)習(xí)社區(qū)長') show_info(name='雷學(xué)委', title='持續(xù)學(xué)習(xí)協(xié)會會長')
可以寫成這樣,使用兩個*,這樣非常靈活,但是缺點也是明顯的(結(jié)構(gòu)靈活有時候需要判斷是否漏傳,直接取容易出錯)
def show_info_v2(**kv_dict): print("姓名為:", kv_dict['name']) print("職稱為:", kv_dict['title']) show_info_v2(name='雷學(xué)委', title='大學(xué)生Python學(xué)習(xí)社區(qū)長')
下面是效果,看起來一樣的。
動態(tài)長度參數(shù)傳遞
通常使用*加參數(shù)名。
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/24 11:39 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : func_call.py # @Project : hello def show_info(name, title): print("姓名為:", name) print("職稱為:", title) show_info('雷學(xué)委', '大學(xué)生Python學(xué)習(xí)社區(qū)區(qū)長') show_info(name='雷學(xué)委', title='持續(xù)學(xué)習(xí)協(xié)會會長') def show_info_v2(name, title, *info): print("姓名為:", name) print("職稱為:", title) print("其他評價:", info) show_info_v2('雷學(xué)委', '大學(xué)生Python學(xué)習(xí)社區(qū)區(qū)長', "熱愛技術(shù)", "熱愛生活")
運行效果如下:
參數(shù)是否會被函數(shù)攥改?
我們看看下面的程序即可:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2021/10/24 11:39 下午 # @Author : LeiXueWei # @CSDN/Juejin/Wechat: 雷學(xué)委 # @XueWeiTag: CodingDemo # @File : func_call.py # @Project : hello def compute_v1(list): sum = 0 for x in list: sum += x list = list + [sum] print("新地址:", id(list)) return sum def compute_v2(list): sum = 0 for x in list: sum += x list[0] = list[0] * 100 return sum _list = [1, 2, 3, 4, 5] print("調(diào)用計算函數(shù)v1之前:", _list) print("調(diào)用計算函數(shù)v1之前內(nèi)存地址:", id(_list)) print(compute_v1(_list)) print("調(diào)用計算函數(shù)v1之后:", _list) print("調(diào)用計算函數(shù)v1之后內(nèi)存地址:", id(_list)) _list = [1, 2, 3, 4, 5] print("調(diào)用計算函數(shù)v2之前:", _list) print("調(diào)用計算函數(shù)v2之前內(nèi)存地址:", id(_list)) print(compute_v2(_list)) print("調(diào)用計算函數(shù)v2之后:", _list) print("調(diào)用計算函數(shù)v2之后內(nèi)存地址:", id(_list))
這里兩個compute函數(shù),一個修改參數(shù)引用地址,一個并沒有修改參數(shù)引用而是修改了引用內(nèi)存空間的關(guān)聯(lián)地址(一個變量)的值。
可以說它們都成功了。但是外面的_list 的地址是任何時候都不會被修改的,除非賦值新地址(也就是在調(diào)用v2之前重新復(fù)制那次)
下面是運行結(jié)果:
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Python正則獲取、過濾或者替換HTML標(biāo)簽的方法
這篇文章主要介紹了Python通過正則表達式獲取、過濾或者替換HTML標(biāo)簽的方法,感興趣的小伙伴們可以參考一下2016-01-01Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,無序鏈表詳解
這篇文章主要為大家詳細介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03python?判斷字符串當(dāng)中是否包含字符(str.contain)
這篇文章主要介紹了python?判斷字符串當(dāng)中是否包含字符(str.contain),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-06-06簡單且有用的Python數(shù)據(jù)分析和機器學(xué)習(xí)代碼
Python編程是一種通用的編程語言,開源、靈活、功能強大且易于使用,python最重要的特性之一是其用于數(shù)據(jù)處理和分析任務(wù)的豐富實用程序和庫集,這篇文章主要給大家介紹了一些簡單且有用的Python數(shù)據(jù)分析和機器學(xué)習(xí)代碼,需要的朋友可以參考下2021-07-07