08函数的参数 进阶
1 不可變和可變的參數(shù)
問題1:? 在函數(shù)內(nèi)部, 針對參數(shù)使用 賦值語句, 會不會影響調(diào)用函數(shù)傳遞的 實(shí)參變量?? --?不會!
- 無論傳遞的參數(shù)是 可變 還是 不可變
 - 只要 針對參數(shù) 使用 賦值語句,? 會在 函數(shù)內(nèi)部 修改 局部變量的引用,? 不會影響到 外部變量的引用
 
問題2: 如果傳遞的參數(shù)是?可變類型,??在函數(shù)內(nèi)部,? 使用?方法?修改了數(shù)據(jù)的內(nèi)容,?同樣會影響到外部的數(shù)據(jù)
1 def demo(num_list): 2 3 print("函數(shù)內(nèi)部的代碼") 4 5 # 使用方法修改列表的內(nèi)容 6 num_list.append(4) 7 print(num_list) 8 print("函數(shù)執(zhí)行完成") 9 10 11 gl_list = [1, 2, 3] 12 demo(gl_list) 13 print(gl_list)在 python 中, 列表變量調(diào)用 += 本質(zhì)上是在執(zhí)行列表變量的 extend 方法,? 不會修改變量的引用
1 def demo(num, num_list): 2 3 print("函數(shù)內(nèi)部的代碼") 4 5 # 使用方法修改列表的內(nèi)容 6 num += num 7 # 本質(zhì)上是在動用列表的 extend 方法 8 num_list += num_list 9 print(num) 10 print(num_list) 11 print("函數(shù)執(zhí)行完成") 12 13 14 gl_num = 2 15 gl_list = [1, 2, 3] 16 demo(gl_num, gl_list) 17 18 print(gl_num) 19 print(gl_list) 20 21 # 函數(shù)執(zhí)行結(jié)果 22 # 4 23 # [1, 2, 3, 1, 2, 3] 24 # 函數(shù)執(zhí)行完成 25 # 2 26 # [1, 2, 3, 1, 2, 3]2? 缺省參數(shù)
- 定義函數(shù)時(shí), 可以給 某個(gè)參數(shù) 指定一個(gè) 默認(rèn)值, 具有默認(rèn)值的參數(shù)就叫做 缺省參數(shù)
 - 調(diào)用函數(shù)時(shí), 如果沒有傳入 缺省參數(shù) 的值, 則在函數(shù)內(nèi)部使用定義函數(shù)時(shí)指定的 參數(shù)默認(rèn)值
 - 函數(shù)的缺省參數(shù),? 將常見的值設(shè)置為參數(shù)的缺省值, 從而 簡化函數(shù)的調(diào)用
 - 例如 : 對列表排序的方法
 
指定函數(shù)的缺省參數(shù)
- 在參數(shù)后使用賦值語句,? 可以指定參數(shù)的缺省值
 
提示
缺省參數(shù)的注意事項(xiàng)
1)? 缺省參數(shù)的定義位置
- 必須保證 帶有默認(rèn)值的缺省參數(shù) 在參數(shù)列表末尾
 
2)? 調(diào)用帶有多個(gè)缺省參數(shù)的函數(shù)
- 在?調(diào)用函數(shù)時(shí),??如果有?多個(gè)缺省參數(shù), 需要指定參數(shù)名,?這樣解釋器才能夠知道參數(shù)的對應(yīng)關(guān)系!
 
3 多值參數(shù)
定義支持多值參數(shù)的函數(shù)
有時(shí)可能需要 一個(gè)函數(shù) 能夠處理的參數(shù) 個(gè)數(shù) 是不確定的,? 這個(gè)時(shí)候, 就可以使用 多值參數(shù)
python 中有 兩種 多只參數(shù):
- 參數(shù)名前增加 一個(gè) *? ?可以接收 元組
 - 參數(shù)名前增加 兩個(gè) * * 可以接收 字典
 
一般在給多值參數(shù)命名時(shí),? 習(xí)慣使用一下兩個(gè)名字
- *args?---- 存放 元組 參數(shù),? 前面有一個(gè) *
 - **kwargs?---- 存放 字典 參數(shù),? 前面有兩個(gè) *
 
args 是 arguments 的縮寫,? 有變量的含義
kw 是 keyword 的縮寫,? kwargs 可以記憶 鍵值對參數(shù)
多值求和
1 def sum_numbers(*args): 2 3 num = 0 4 5 print(args) 6 # 循環(huán)遍歷 7 for n in args: 8 num += n 9 return num 10 11 12 result = sum_numbers(1, 2, 3) 13 14 print(result) 15 16 17元組和字典的拆包
在調(diào)用帶有多值參數(shù)的函數(shù)時(shí),? 如果希望:
- 將一個(gè) 元組變量,? 直接傳遞給 args
 - 將一個(gè) 字典變量,? 直接傳遞給 kwargs
 
就可以使用 拆包,? 簡化參數(shù)的傳遞,? 拆包 的方式是:
- 在 元組變量前,? 增加 一個(gè) *?
 - 在 字典變量前,? 增加 兩個(gè)*
 
?
轉(zhuǎn)載于:https://www.cnblogs.com/xinmomoyan/p/10346072.html
總結(jié)
以上是生活随笔為你收集整理的08函数的参数 进阶的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 每周一个 Python 模块 | has
 - 下一篇: 30 ArcGIS 许可管理器常见问题(