函式的引數一節中提到:
def add_end(l = );
return l
正常呼叫add_end時(也就是有引數傳入時):
>>> add_end([1, 2, 3])
[1, 2, 3, 'end']
>>> add_end(['x', 'y', 'z'])
['x', 'y', 'z', 'end']
當使用預設引數時:
>>> add_end()
['end']
>>> add_end()
['end', 'end']
>>> add_end()
['end', 'end', 'end']
廖雪峰解釋如下:
python函式在定義的時候,預設引數l
的值就被計算出來了,即,因為預設引數
l
也是乙個變數,它指向物件,每次呼叫該函式,如果改變了
l
的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。
我的理解如下:
第一行,傳入引數[1,2,3],接下來的**都是針對[1,2,3] 的,跟l = 沒有關係,第三行和第一行一樣,這兩次都沒涉及到l = ,所以l的值不變。第二行沒有傳入引數,所以接下來的**是針對l了,由變成了['end'],第四行還是針對l,但l的值已經變成了['end'],又執行一次,所以就變成了['end','end'] 。
改進的方式如下:
def add_end(l=none):
if l is none:
l =
return l
>>> add_end()
['end']
>>> add_end()
['end']
但是我對if l is none : l = 這一句還不理解,希望後續能明白吧。
python第乙個程式設計 第乙個 Python 程式
簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...
第乙個python 程式
有人在論壇 上問 將日誌格式化的方法,剛好學python,就拿這個練手了 09 55 54 error1 tmp error log.3 50 times mon jun 28 00 00 53 2009 09 55 54 error1 tmp error log.3 50 times 09 56 ...
第乙個python程式
在之前學習了基本的python知識以後,我決定編寫自己的第乙個python程式。可汗學院公開課 全部 根據以上兩個內容為基礎,編寫乙個爬取 源 的python程式,中間一步步來,終極目標是實現 rss 那樣的新聞聚合功能。這個想法我已經想了快半個月了,可是一直遲遲沒有實現,正好趁這個機會。準備開始像...