淺談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-01
Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,無序鏈表詳解
這篇文章主要為大家詳細介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
python?判斷字符串當(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

