# 默認參數值
對于一些函數,你可能希望它的一些參數是 可選 的,如果用戶不想要為這些參數提供值的話,這些參數就使用默認值。這個功能借助于默認參數值完成。你可以在函數定義的形參名后加上賦值運算符(=)和默認值,從而給形參指定默認參數值。
注意,默認參數值應該是一個參數。更加準確的說,默認參數值應該是不可變的——這會在后面的章節中做詳細解釋。從現在開始,請記住這一點。
```
#!/usr/bin/python
# Filename: func_default.py
def say(message, times = 1):
????print message * times
say('Hello')
say('World', 5)
```
(源文件:[code/func_default.py](code/func_default.py))
## 輸出
```
$ python func_default.py
Hello
WorldWorldWorldWorldWorld
```
## 它如何工作
名為`say`的函數用來打印一個字符串任意所需的次數。如果我們不提供一個值,那么默認地,字符串將只被打印一遍。我們通過給形參`times`指定默認參數值`1`來實現這一功能。
在第一次使用`say`的時候,我們只提供一個字符串,函數只打印一次字符串。在第二次使用`say`的時候,我們提供了字符串和參數`5`,表明我們想要 說 這個字符串消息5遍。
重要
只有在形參表末尾的那些參數可以有默認參數值,即你不能在聲明函數形參的時候,先聲明有默認值的形參而后聲明沒有默認值的形參。
這是因為賦給形參的值是根據位置而賦值的。例如,`def func(a, b=5)`是有效的,但是`def func(a=5, b)`是 無效 的。
- 版權信息
- 前言
- 本書的由來
- 本書目前的狀況
- 約定條款
- 反饋
- 值得思考的一些東西
- 第1章 介紹
- Python的特色
- 為什么不使用Perl?
- 程序員的話
- 第2章 安裝Python
- Windows?用戶
- 概括
- 第3章 最初的步驟
- 使用帶提示符的解釋器
- 挑選一個編輯器
- 使用源文件
- 可執行的Python程序
- 獲取幫助
- 概括
- 第4章 基本概念
- 數
- 字符串
- 變量
- 標識符的命名
- 數據類型
- 對象
- 邏輯行與物理行
- 縮進
- 概括
- 第5章 運算符與表達式
- 運算符
- 運算符優先級
- 表達式
- 概括
- 第6章 控制流
- if語句
- while語句
- for循環
- break語句
- continue語句
- 概括
- 第7章 函數
- 函數形參
- 局部變量
- 默認參數值
- 關鍵參數
- return語句
- DocStrings
- 概括
- 第8章 模塊
- 字節編譯的.pyc文件
- from..import語句
- 模塊的name
- 制造你自己的模塊
- dir()函數
- 概括
- 第9章 數據結構
- 列表
- 元組
- 字典
- 序列
- 參考
- 更多字符串的內容
- 概括
- 第10章 解決問題——編寫一個Python腳本
- 解決方案
- 軟件開發過程
- 概括
- 第11章 面向對象的編程
- self
- 類
- 對象的方法
- __init__方法
- 類與對象的方法
- 繼承
- 概括
- 第12章 輸入/輸出
- 儲存器
- 概括
- 第13章 異常
- try..except
- 引發異常
- try..finally
- 概括
- 第14章 Python標準庫
- sys模塊
- os模塊
- 概括
- 第15章 更多Python的內容
- 單語句塊
- 列表綜合
- 在函數中接收元組和列表
- lambda形式
- exec和eval語句
- assert語句
- repr函數
- 概括
- 第16章 接下來學習什么?
- 探索更多內容
- 概括
- 附錄A 自由/開放源碼軟件(FLOSS)
- 附錄B 關于本書
- 關于作者
- 關于譯者
- 關于簡體中文譯本
- 附錄C 修訂記錄
- 術語表