Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
    1. 関数の定義と呼び出し
    2. 引数の指定
    3. 値を返す
    4. 変数のスコープ
    5. 引数のデフォルト値
    6. 可変個の引数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

関数

変数のスコープ

次のコードの multiple 関数で定義された変数 xy が利用できる範囲(つまり有効範囲:これをスコープという)はmultiple 関数の内部だけである.変数 xy は関数内だけで有効なローカル変数と呼ばれる.よって,次のコードのように multiple 関数のローカル変数 x を外部(12行目)から呼び出そうとするとエラーになる.


  def multiple(x, y):
    """
    二つの引数の積を返す
    """
    print('x = ', x)
    return x * y

a = 5
b = 7
c = multiple(a, b)
print('c = ', c)
print(x)
x =  5
c =  35
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-4-15f14a917bd9> in <module>
      8 c = multiple(a, b)
      9 print('c = ', c)
---> 10 print(x)

NameError: name 'x' is not defined

また,次のコードの6行目のように,関数の外で定義された変数 aグローバル変数であるが,multiple 関数で用いられる変数 aローカル変数である.よって,3行目でローカル変数 a の値を書き換えてもグローバル変数 a には影響がないので,12行目の print では 5 が表示される.

def multiple(x, y):
    """
    二つの引数の積を返す
    """
    a = 10000  # ローカル変数
    return x * y

a = 5  # グローバル変数
b = 7
c = multiple(a, b)
print('c = ', c)
print('a = ', a)
c =  35
a =  5

ローカル変数とグローバル変数の違いや変数のスコープについての詳細は書籍や他のWebページを参照して下さい.

目次に戻る