関数とスコープ・ラムダ比較問題
関数内でのglobal宣言とnonlocal宣言の使用目的の違いについて、正しいのはどれですか?
A.global宣言はグローバルスコープの変数を参照するため、nonlocal宣言はローカルスコープを参照するためである
✗ 「参照するため」は不正確です。両者は変数を修正可能にするための宣言です。
B.global宣言はグローバルスコープの変数を修正可能にし、nonlocal宣言は外側のローカルスコープの変数を修正可能にする← 正解
✓ 正解です。global宣言はグローバル変数の修正、nonlocal宣言は外側のローカル変数の修正を可能にします。
C.nonlocal宣言はネストされた関数内でのみ使用でき、global宣言はどの関数でも使用可能である
✗ nonlocal宣言はネストされた関数内でのみ機能しますが、globalはその制限がありません。説明は不完全です。
D.global宣言と nonlocal宣言は同じ効果であり、使い分ける必要はない
✗ 両者は異なる目的を持つ宣言です。global宣言はモジュールレベルの変数、nonlocal宣言はクロージャの変数に対応します。
「関数とスコープ・ラムダ」の他の問題
以下のコードを実行したときの出力結果として正しいものはどれか。
def multiply(x, y=3):
r…以下のコードを実行したときの出力結果として正しいものはどれか。
square = lambda x: x ** 2
a…以下のコードを実行したときの出力結果として正しいものはどれか。
def calculate(a, b, c=2):
…以下のコードを実行したときの出力結果として正しいものはどれか。
numbers = [2, 3, 4, 5]
resu…以下のコードを実行したときの出力結果として正しいものはどれか。
def outer(x):
def inner…以下のコードを実行したときの出力結果として正しいものはどれか。
def func(a, b, *args):
…