このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【Python】変数スコープの忘れやすい点を整理

個人的にPythonの変数スコープは分かりづらく、確認したり間違えることが多いです。

そこで、変数スコープでよく確認することのある3つを備忘録として整理します。

ちなみに、重箱の隅まで完璧に理解したいという方は↓のクイズとかをやってみてください。
正直ここまでのレアケースは完璧に理解する必要はないかなと思います。

意外とややこしい Python のスコープを理解するためのクイズ14問

1. 基本的にグローバル変数になる

Pythonでは変数宣言すると、基本的にグローバル変数となります。

関数内などは違いますが、なんとなく宣言した変数はすべてグローバルだと考えてください。

x = 1

例えば、この変数のスコープはグローバルです。

x = 1

def print_x():
    print(x)

print_x()

xはグローバルなため、このように関数内で参照してもエラーは発生しません。

2. グローバル変数は関数の先に書いても後にOK

スクリプト言語だと時々、関数より先にグローバル変数の宣言が必要なことがあります。

Pythonでは先でも後でも問題ありません。(これを気にする人は少ないかな)

x = 1

def print_x():
    print(x)

print_x()
def print_x():
    print(x)

x = 1
print_x()

この2つのコードは、どちらも同じ動作をします。

3. globalキーワード

グローバル変数は、どこからでも"参照"が可能です。

参照可能ですが、中身を変えたいときにはglobalキーワードが必要になります。

def change_x():
    global x  # globalキーワード
    x = 2

x = 1
change_x()
print(x)

関数内で中身を変えたいときには、一度globalキーワードを書いて、それから代入する必要があります。

Python

Posted by やろまい