/
Time Limit: 0 msec / Memory Limit: 0 KiB
キーポイント
Python ソースコードに現れる要素は概ね以下の3つに分類できる:
- 要素1: 自分で定義した変数や関数
- 要素2: 組み込みで定義された型や関数
- 要素3: import したモジュール
本節の概要と目的
プログラミングを学ぶにあたって、自分でコードを書くだけでなく、他人が書いたり、生成AIによって出力されたコードを読む機会もあると思います。自分で書いていないコードを読むことは、ときにコードを一から書くよりも難しいことがあります。そのようなときでも、コードのひとつひとつの要素の理解があれば、順を追って読むことで処理の内容を理解することが可能です。
本節では Python コードに現れる要素を整理することで、間違いなくコードを理解するための読み方を解説します。
※ 本節の内容はこの後の節の理解には大きく影響しません。読んでみてピンとこない場合は一度飛ばして先に進むことをおすすめします。
Python コードに現れる要素
以下の例をご覧ください。
# 要素1: 自分で定義した変数や関数
a = 0
l = [3,2,1,1]
def func(a):
return 2*a
print(a, l, func, func(a), func(l))
# 要素2: 組み込みで定義された型や関数
t = tuple(l)
sl = sorted(l)
print(t, sl)
# 要素3: import したモジュール
import collections
d = collections.Counter(["a", "b", "a", "c"])
print(d)
出力
0 [3, 2, 1, 1] <function func at 0x7f8894b037e0> 0 [3, 2, 1, 1, 3, 2, 1, 1]
(3, 2, 1, 1) [1, 1, 2, 3]
Counter({1: 2, 3: 1, 2: 1})
処理内容や出力の意味はわからなくても大丈夫です。
以下でコードに現れる要素を整理していきます。
要素1: 自分で定義した変数や関数
第一章で学んだように、変数や関数を自分で定義することができます。
一度定義したこれらの要素はコードの以降の部分で呼び出すことが可能です。
a = 0
l = [3,2,1,1]
def func(a):
return 2*a
print(a, l, func, func(a), func(l))
関数(ここでは func)も「要素」であり print で出力することができます。
要素2: 組み込みで定義された型や関数
Python 言語側が標準で提供している機能もあります。これらは変数や関数と異なり、事前の準備なく呼び出すことが可能です。
t = tuple(l) sl = sorted(l) print(tuple, sorted, t, sl)
tuple は組み込みの型、sorted は組み込み関数になります。
こうした要素はコードに何の前触れもなく登場するため、知っておかないとコードを読み解くことが難しくなります。
競技プログラミングに現れる組み込み機能は種類が限られるため、本教材で学んだものを覚えておけば十分です。
組み込みで定義されている機能の一覧は公式ドキュメントを参照するのがよいでしょう。
要素3: import したモジュール
import collections d = collections.Counter(["a", "b", "a", "c"]) print(d)
import は組み込み機能以外に提供されている Python の標準機能や、自分で外部ファイルに定義した機能を読み込む処理です。
例えば、Python は標準で collections というモジュールを提供しています。collections は競技プログラミングでも役に立つ便利なコンテナ(リストやタプルのようなデータを蓄えるための機能)を複数提供しています。
上記の例でははじめに import 文で collections モジュールを読み込んでいます。
次に collections.Counter という collections が提供するクラスを利用して新たなオブジェクトを定義しています。Counter は要素の個数をカウントできるクラスで、リストを与えることでリストに含まれる要素の個数を辞書形式で返します。
詳しくは collections を扱う4章以降で解説しますが、Counter({'a': 2, 'b': 1, 'c': 1}) という出力結果が示すように、要素の個数がカウントされていることがわかります。
このように、import によって新たな機能を利用することができます。3章の後半ではこの import を使った書き方も登場するため、覚えておくとよいでしょう。
コードの読み方
ここまでで、コードに現れる要素を次の3つに分類しました:
- 要素1: 自分で定義した変数や関数
- 要素2: 組み込みで定義された型や関数
- 要素3: import したモジュール
逆に、これ以外の要素は基本的に現れません。したがって、コードを読んでいて知らない要素が出てきた場合、上に辿っていき以下のいずれかに該当しないかを調べることで、要素が何であるかを必ず明らかにすることができます。
=演算子で定義した変数や、defキーワードで定義した関数でないか?- 公式ドキュメントに乗っている組み込みの型や関数ではないか?
importしたモジュールではないか?
要素の出所を特定したら、それぞれに合った調べ方(変数や関数であれば定義箇所の内容を確認する、組み込み機能やモジュールであればドキュメントを参照する)をすることでその使い方を知ることができます。
競技プログラミングを学ぶ過程では、解説のサンプルコードや他の競技者のコードを参考にすることもあると思います。分からない要素が出てきたときにはこの読み方を思い出してください。
問題
本節には練習問題はありません。