Pythonにおけるスコープの扱いのニュアンス

ローカル変数とグローバル変数を扱う上での重要なニュアンスについて考察します。

グローバル変数 num があるとします。 グローバルな num をコンソールに出力する関数 func を作成してみましょう。

pythonnum = 1

def func():
  print(num)

func() # 1を出力します

では、関数 print の次の行にローカルな num を宣言してみましょう。 コードを実行すると、コンソールにエラーが出力されます。 これは、Pythonが関数内で num をまだ宣言されていないローカル変数としてのみ認識するためです。

pythonnum = 1

def func():
  print(num) # エラーを出力します
  num = 2

では、関数内のコードを書き換えて、変数 num の値が 2 増えるようにしてみましょう。

pythonnum = 1

def func():
  num += 2 # エラーを出力します

このエラーは、式 num += 2 が次の記述を表しているために発生します。

pythonnum = num + 2

しかし、加算しようとしているローカル変数自体はまだ宣言されていません。 したがって、存在しない値に数値を加算することはできないため、Pythonはエラーを出力します。

Задание 1

次のコードを実行した結果はどうなりますか。

pythontst = '12'

def func():
  tst = 12
  return tst
  
print(tst)
Задание 2

次のコードを実行した結果はどうなりますか。

pythontst = 'abc'

def func():
  tst = tst.upper()
  return tst

func()
print(tst)
Задание 3

次のコードを実行した結果はどうなりますか。

pythontst = 'abc'

def func():
txt = tst.upper()
return txt
    
print(func())
print(tst)