3-2. Python 3 エンジニア認定基礎試験 対策

基礎試験は、オフィシャル教材『Pythonチュートリアル』から網羅的に出題されます。

コマンドライン引数(sys.argv)と対話型モード

Python

import sys

# コマンドラインから python script.py arg1 arg2 と実行した場合
# sys.argv[0] はスクリプト名 ('script.py')
# sys.argv[1] は第1引数 ('arg1')

対話型モード(REPL)では、直前に評価された結果が特殊変数 _(アンダースコア)に自動代入される点も頻出です。

引っかけ問題対策(出題率高)

1. ミュータブルオブジェクトのデフォルト引数

関数の定義時にデフォルト引数として空リスト [] を指定すると、関数呼び出し間でデータが保持されてしまう仕様を突いた問題が多発します。

Python

def append_to(element, target=[]):
    target.append(element)
    return target

print(append_to(1)) # [1]
print(append_to(2)) # [1, 2] (空リストに戻らない!)

2. 浅いコピー(copy)と深いコピー(deepcopy)

ネストされたリストの参照の扱いが出題されます。

Python

import copy

a = [[1, 2], [3, 4]]
b = copy.copy(a)       # 浅いコピー: 内部リストの参照は共通
c = copy.deepcopy(a)   # 深いコピー: 内部オブジェクトまで完全複製

a[0][0] = 99
print(b[0][0]) # 99 (影響を受ける)
print(c[0][0]) # 1  (影響を受けない)

コメント

タイトルとURLをコピーしました