>>> def print_params(x,y,z=3,*pospar,**keypar):
print x,y,z
print pospar
print keypar
>>>>print_params(1,2,3,5,6,7,foo=1,bar=2)
1 2 3
(5, 6, 7)
{'foo': 1, 'bar': 2}
>>> print_params(1,2)
1 2 3
()
{}
最初の 3 つのパラメータは固定されており、5 番目のパラメータは複数のパラメータを収集できます。5 番目のパラメータはキーワード パラメータであり、複数のキー ワード パラメータを収集できます。 。入力がない場合、デフォルトは空のタプルまたは空の辞書になります。
2.4 逆の処理
パラメーターをタプルと辞書として収集する方法について説明しましたが、* と ** を使用すると、逆の操作を実行することもできます。 (1) 呼び出し時に
を使用してコード をコピーします。 コードは次のとおりです。 def add(x ,y): return x+y
>>>>params =(1,2)
>>>>add(*params)
3
(2) 定義時に
をコピーするには、
を使用します。 コードは次のとおりです。 🎜>>>> def with_stars(**kds): print kds['name'],'is',kds['age'],'year old'>>> ; args = {'name': 'ガンビーさん','年齢':42} >>> with_stars(**args)ガンビーさんは 42 歳です
Three . スコープ
x=1 代入ステートメントの実行後、名前 x は値 1 を参照します。これは辞書を使用するのと似ており、キーは値を参照します。もちろん、変数と対応する値は「目に見えない」辞書を使用します。組み込みの vars 関数は、この辞書を返すことができます:
コードをコピーします
コードは次のとおりです:
>> ;> x=1 >>> スコープ = vars()>> スコープ['x']>> 'x'] += 1>>> x
2
この目に見えない辞書は、名前空間またはスコープと呼ばれます。グローバル スコープに加えて、各関数呼び出しによって新しいスコープが作成されます。
プログラミングを勉強したことがある人は基本的にスコープについて知っているので、ここでは詳しく説明しません。
4. 再帰
再帰定義には、独自の定義内容への参照が含まれます。
有用な再帰関数には次の部分が含まれます:
(1) 関数が値を直接返す場合、基本的なインスタンス (最小尤度問題) があります
(2) 1 つ以上の最小問題を含む再帰インスタンス 部分的再帰呼び出し。
ここで重要なのは、問題を小さな部分に分割することです。再帰は常に最小尤度問題で終了するため、永遠に続けることはできません。その問題は基本インスタンスに保存されます。
3 つの古典的な再帰の例を見てみましょう:
A. Factorial>>>gt; if n == 1:
return 1
else :
return n *階乗(n-1)
[/code]
B. Power
コードをコピー
コードは次のとおりです。
>>> def power(x,n):
if n == 0:
return 1 else: return x * power( x,n-1) C. 二分探索 (数値がシーケンス内にある必要があると仮定)
コードをコピー
コードは次のとおりです:
>>> def search(sequence,number, lower,upper):
if lower == upper:assert num == sequence[upper | 上) else: return search(シーケンス,番号,下,中)