leetcode刷題時,看到一段**(第22題)
題目描述:
given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
for example, given n = 3, a solution set is:
[ "((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
class solution:
def generateparenthesis(self, n: int) -> list[str]:
def generate(p, left, right, parens=):
if left: generate(p + '(', left-1, right)
if right > left: generate(p + ')', left, right-1)
if not right:
parens += p,
return parens
return generate('', n, n)
這裡每次遞迴呼叫時傳入的實際上都是引數parens,而不是空的list。
解釋如下:
python函式在定義的時候,預設引數l的值就被計算出來了,即,因為預設引數l也是乙個變數,它指向物件,每次呼叫該函式,如果改變了l的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。
所以,定義預設引數要牢記一點:預設引數必須指向不變物件!
參考廖雪峰的官方**
「parens += p, 」 這一句,等價於 "parents+=[p] ".
python預設引數呼叫方法解析
最常見的一種形式是的是為乙個或者多個引數指定預設值,這會建立乙個可以使用比定義時允許的引數更少的引數呼叫的函式,def ask ok prompt,ret程式設計客棧ries 4,reminder please try again while true ok input prompt if ok i...
python 預設引數 Python預設引數有坑?
最近有小夥伴在面試中遇到了 關於函式預設引數的坑 的題目,少數夥伴對此問題理得不是太清楚,今天匯智妹請到匯智動力高階教師鄧老師為大家詳細講解一下,幫助不太清楚的小夥伴清晰的梳理一遍。鄧老師本次主要從以下三點來講解 什麼是預設引數?函式預設引數的坑是什麼?函式預設引數為什麼會有坑?一 什麼是預設引數 ...
python的預設引數 Python 預設引數的坑
話不多說,上 def fun x,a b c b b x print f a b c fun 1 fun 2 fun 3 我們在這段 中 定義了乙個位置引數 x,乙個乙個預設引數 a,a 的預設值為空列表,另乙個預設引數 b,b 的預設值為乙個空字串,在函式體中定義了乙個變數 c,並也給 c 傳遞了...