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