Pythonの変数と関数、クラスを瞬時に見分ける!新人エンジニアのためのコード読解術
こんにちは。ゆうせいです。
プログラムのコードを読んでいて、「この単語はいったい何者なんだ…?」と手が止まってしまった経験はありませんか?特にPythonはシンプルに書ける分、変数なのか、関数なのか、はたまたクラスなのか、一見すると見分けがつきにくいことがあります。
ご安心ください!実は、いくつかのポイントさえ押さえれば、誰でも簡単に見分けられるようになります。今回は、新人エンジニアのあなたのために、Pythonのコードに登場する主要な要素(ローカル変数、グローバル変数、関数、クラス)を一目で見分ける方法を、わかりやすく解説していきますね。
まずは基本の「キーワード」に注目しよう!
コードをパッと見たときに、何よりも先に注目してほしいのが「キーワード」です。キーワードは、Pythonの文法上、特別な意味を持つ予約された単語のこと。これを知っているだけで、見分けがグッと楽になりますよ。
def
: これがあったら、それは「関数」の始まりの合図です。def
の後ろには、必ず関数名が続きます。class
: これがあったら、それは「クラス」の始まりの合-図です。class
の後ろには、必ずクラス名が続きます。
# これは関数の定義
def my_function():
print("これは関数です")
# これはクラスの定義
class MyClass:
def my_method(self):
print("これはクラスの中のメソッドです")
どうでしょう?def
と class
を見つけるだけで、コードの大きな構造が見えてきませんか?まずはこの2つのキーワードを探す癖をつけてみましょう。
命名規則(ネーミングルール)という大きなヒント
Pythonには、コードを読みやすくするためのお作法集である「PEP8(ペップエイト)」というスタイルガイドがあります。世界中のPythonエンジニアがこのルールに従ってコードを書いているため、命名規則を知っていると、その名前が何を表しているのかを推測できるのです。
関数と変数の見分け方:スネークケース
関数と変数は、どちらも snake_case
(スネークケース)で命名するのが一般的です。これは、単語と単語をアンダースコア _
でつなぐ書き方です。
- 関数名:
calculate_total_price
,get_user_name
- 変数名:
user_name
,item_price
「あれ、どっちも同じ書き方なの?」と思いましたか?その通りです。だからこそ、先ほどのキーワード def
が重要になるのです。
# def があるから、これは関数
def send_email():
# 関数の中で = を使って代入されているから、これはローカル変数
email_address = "test@example.com"
print(email_address)
# 関数の外で = を使って代入されているから、これはグローバル変数
user_id = 123
関数名も変数名もスネークケースですが、def
の直後にあるのが関数名、そして関数の中や外で =
を使って値を代入されているのが変数、と見分けることができます。
クラスの見分け方:キャメルケース
一方で、クラスは CamelCase
(キャメルケース)または PascalCase
(パスカルケース)と呼ばれる、各単語の頭文字を大文字にする書き方をします。
- クラス名:
UserModel
,ProductItem
,HttpRequest
先ほどの snake_case
とは明らかに見た目が違いますよね。そのため、単語の頭文字が大文字になっている名前を見つけたら、「これはクラスだな」とすぐに判断できます。
# 頭文字が大文字のキャメルケースだから、これはクラス
class UserProfile:
pass
# 小文字とアンダースコアのスネークケースだから、これは変数(このクラスのインスタンス)
user_profile = UserProfile()
ローカル変数とグローバル変数の違いは「場所」で見分ける
さて、def
や class
が付いていない名前は「変数」だと分かりました。しかし、変数には「ローカル変数」と「グローバル変数」の2種類があります。この2つは、その変数が使える範囲(スコープ)が異なります。
ローカル変数:関数の中だけで生きる変数
「ローカル変数」は、関数の中で定義された変数のことです。その名の通り、とても局所的(ローカル)で、定義された関数の中だけでしか使えません。関数が終了すると、その変数は消えてしまいます。
料理に例えるなら、ある料理(関数)を作るためだけに取り出したボウルやお皿のようなものです。その料理が終われば、片付けてしまいますよね。
def calculate_area():
# width と height は calculate_area 関数の中だけで使えるローカル変数
width = 10
height = 5
area = width * height
print(area)
calculate_area()
# 関数の外からローカル変数を使おうとするとエラーになる!
# print(width) # NameError: name 'width' is not defined
グローバル変数:プログラム全体で使える変数
「グローバル変数」は、関数の外側(プログラムのトップレベル)で定義された変数です。グローバル変数は、プログラムのどこからでもアクセスできます。
これは、キッチンのコンロや冷蔵庫のように、どんな料理を作るにしても共通で使える道具、とイメージすると分かりやすいかもしれません。
# tax_rate はプログラム全体で使えるグローバル変数
tax_rate = 0.1
def calculate_price_with_tax(price):
# 関数の中からグローバル変数を参照する
total_price = price * (1 + tax_rate)
print(total_price)
calculate_price_with_tax(1000)
print(tax_rate) # もちろん関数の外からも使える
ただし、グローバル変数は便利ですが、どこからでも変更できてしまうため、多用するとプログラムが複雑になり、バグの原因になりやすいというデメリットもあります。基本はローカル変数を使い、本当に必要な場合のみグローバル変数を使うように心がけましょう。
まとめ:見分けるためのチェックリスト
それでは、これまでの内容を表にまとめてみましょう。コードの中で謎の単語に出会ったら、この表をチェックしてみてください。
種類 | 見分けるポイント | 命名規則(PEP8) |
クラス | class キーワードの直後にある。 | CamelCase (例: UserModel ) |
関数 | def キーワードの直後にある。呼び出すときに () が付く。 | snake_case (例: get_user_name ) |
ローカル変数 | 関数の内部で = を使って値が代入されている。 | snake_case (例: item_price ) |
グローバル変数 | 関数の外部(トップレベル)で = を使って値が代入されている。 | snake_case (例: app_version ) |
今後の学習の指針
今回は、Pythonの基本的な要素を見分ける方法を学びましたね。この知識は、他の人のコードを読んだり、エラーメッセージを解読したりする際に、必ずあなたの助けになります。
次にステップアップするためには、以下の点について学習を進めていくのがおすすめです。
- スコープのルール(LEGBルール): Pythonが変数を探す順序には「LEGB」というルールがあります。これを理解すると、なぜその場所でその変数が使えるのか(または使えないのか)がより深く分かります。
- クラスの継承: クラスは他のクラスの機能を引き継ぐ(継承する)ことができます。
class NewClass(BaseClass):
のように書かれているコードが何をしているのかを学んでみましょう。 - モジュールとインポート:
import
というキーワードが出てきたら、それは他のファイル(モジュール)に定義された変数や関数、クラスを読み込んで使っている証拠です。
最初は戸惑うことも多いと思いますが、コードをたくさん読んで、実際に自分で書いていくうちに、自然とこれらの違いが見分けられるようになっていきます。焦らず、一歩ずつ進んでいきましょう。応援しています!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。
最新の投稿
山崎講師2025年10月6日確率的勾配降下法(SGD)はなぜ”確率的”?名前の由来を旅人に例えて解説!
山崎講師2025年10月6日【対数】logの底はいつ省略できる?ネイピア数eと常用対数を徹底解説!
山崎講師2025年10月6日クロスエントロピー誤差とは?AIの「答え合わせ」の仕組みを数式から徹底解説!
山崎講師2025年10月6日テンソルの次元削減!Flattenが機械学習で果たす重要な役割とは?