def outerFunc(number):
if number < 0:
def innerFunc(factor):
return number * factor
else:
def innerFunc(summand):
return number + summand
return innerFunc
x = outerFunc(-8)
print(x(4))
期待通りにprintステートメントの結果は-32
です。私は、Python 3.5.2を使用していPythonで返された関数から属性を取得
:
- 声明で
x
にinnerFunc
をバインドした後、内部機能のnumber
プロパティにアクセスすることは可能ですがx = outerFunc(-8)
?言い換えれば、閉鎖を実行した後に、number
の保存された値、この場合は-8
に直接アクセスすることは可能ですか? - if文の評価に応じて関数を返すのは良いプログラミングスタイルですか?個人的には、より良いアプローチがあると思いますが、わかりません。あなたの助けのための
感謝。
内部構造にアクセスしようとするとスタイルが良くありません。どうしてあなたは '数字 'を取得したいのですか? – Daniel
あなたは絶対に正しいです。それらの構造にアクセスすることはかなり悪い考えです。どんな種類の生産的なコードでも私はそれを使用しません。この場合、私は内部でクロージャーがどのように機能するかを理解するだけです。 – 6q9nqBjo