関数とスコープ・ラムダ誤り発見
以下の記述で誤っているものはどれか
A.**kwargsを使用して可変長のキーワード引数を関数に渡すことができ、辞書として扱われる
✓ この記述は正しい。**kwargsは可変長のキーワード引数を辞書として受け取る
B.スコープの探索順序はLEGB則に従い、ローカル→エンクロージング→グローバル→ビルトインの順で行われる
✓ この記述は正しい。LEGB則(Local、Enclosing、Global、Built-in)がPythonのスコープ探索順序を定めている
C.関数のデフォルト引数にmutable オブジェクトを使用すると、すべての呼び出し間で同じオブジェクトが共有されるため推奨される← 正解
✓ 正解です。この記述が誤りで、デフォルト引数にmutableオブジェクトを使用するのは「推奨されない」アンチパターンです。予期しない動作を招くため、Noneをデフォルトに設定して関数内で初期化する方法が推奨されます
D.クロージャは外側の関数のスコープにある変数にアクセスできるネストされた関数である
✓ この記述は正しい。クロージャはネストされた関数で、外側の関数のスコープにある変数を参照・保持する
「関数とスコープ・ラムダ」の他の問題
以下のコードを実行したときの出力結果として正しいものはどれか。
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):
…