w ϞδϡʔϧείʔϓͰೖ͞Εͨม
w ؔͰࢀরՄೳ
άϩʔόϧมͱԿ͔
# -*- coding:utf-8 -*-
x = 0 # άϩʔόϧม
def foo():
print(x)
foo()
˞1ZUIPO+BQBOθϩ͔Βͷ1ZUIPOೖߨ࠲
ʮϩʔΧϧมͱάϩʔόϧมʯΑΓ
IUUQTXXXQZUIPOKQUSBJOGVODUJPOMPDBM@WBSIUNM
Slide 5
Slide 5 text
w ؔͰೖͰ͖ͳ͍
w ͦͷ··ͩͱϩʔΧϧมʹͳΔ
άϩʔόϧมͱԿ͔
# -*- coding:utf-8 -*-
x = 0 # άϩʔόϧม
def bar():
x = 999
print(x)
def foo():
print(x)
bar() # => 999
foo() # => 0
Slide 6
Slide 6 text
ؔͰάϩʔόϧมΛೖ
w HMPCBMจΛ͏
# -*- coding:utf-8 -*-
x = 0
def bar():
global x
x = 10
def foo():
print(x)
bar()
foo() # => 10
Slide 7
Slide 7 text
HMPCBMจͷఆٛ
w ެࣜυΩϡϝϯτΑΓ
w
HMPCBMจɺݱࡏͷίʔυϒϩοΫશମͰҡ࣋͞ΕΔએݴจͰ͢ɻ
w
HMPCBMจɺྻڍͨࣝ͠ผࢠΛάϩʔόϧมͱͯ͠ղऍ͢ΔΑ͏ࢦ
ఆ͢Δ͜ͱΛҙຯ͠·͢ɻ
IUUQTEPDTQZUIPOPSHKBSFGFSFODFTJNQMF@TUNUTIUNM IJHIMJHIUHMPCBMUIFHMPCBMTUBUFNFOU
Slide 8
Slide 8 text
HMPCBMจͷఆٛ
# -*- coding:utf-8 -*-
x = 0
def bar():
global x
x = 10
def foo():
print(x)
bar()
foo() # => 10
HMPCBMจɺݱࡏͷίʔυϒϩο
ΫશମͰҡ࣋͞ΕΔએݴจͰ͢ɻ
ݱࡏͷίʔυϒϩοΫ
w
HMPCBMจɺྻڍͨࣝ͠ผࢠΛ
άϩʔόϧมͱͯ͠ղऍ͢ΔΑ͏ࢦ
ఆ͢Δ͜ͱΛҙຯ͠·͢ɻ
ྻڍͨࣝ͠ผࢠ
Slide 9
Slide 9 text
ʢඇਪʣϞδϡʔϧείʔϓͰະఆٛ
w ϞδϡʔϧείʔϓͰະఆٛͰಈ͘
w Մಡੑ͕ѱ͍
ˠάϩʔόϧมYͷॳظʁ
ɹؔͷ࣮ߦॱংͷ֬ೝ͕ඞཁʹͳΔ
# -*- coding:utf-8 -*-
# x = 0
def bar():
global x
x = 10
def foo():
print(x)
bar()
foo() # => 10
Slide 10
Slide 10 text
ʢඇਪʣϞδϡʔϧείʔϓͰະఆٛ
w વɺઌʹࢀর͢ΔͱΤϥʔ
# -*- coding:utf-8 -*-
# x = 0
def bar():
global x
x = 10
def foo():
print(x)
foo() # ERROR!
bar()
Slide 11
Slide 11 text
ʢඇਪʣࢀর͚ͩͳͷʹHMPCBMจ
w Մಡੑ͕ѱ͘ͳΔ
w ೖ͢ΔͭΓͩͬͨʁόάʁ
# -*- coding:utf-8 -*-
x = 0
def bar():
global x
x = 10 # xʹೖ͍ͯ͠Δ
def foo():
global x
print(x) # xೖ͠ͳ͍ͷʁ
bar()
foo() # => 10
Slide 12
Slide 12 text
ϩʔΧϧมͷ༏ઌ
w άϩʔόϧมͱಉ໊ͷϩʔΧϧมɺ
ϩʔΧϧม͕༏ઌ
w ʢͦͦάϩʔόϧมYͬͯϩʔΧϧ
มͱݟ͚͕͖ͭʹ͍͘ʂʣ
# -*- coding:utf-8 -*-
x = 0
def foo():
x = 10 # xϩʔΧϧม
print(x)
foo() # => 10
Slide 13
Slide 13 text
1&1ͷάϩʔόϧมͷ໋໊ϧʔϧ
w ϞδϡʔϧείʔϓͰඇެ։ͳΒɺઌ಄
ʹΞϯμʔείΞΛೖΕΔ
w ࢀরൣғ͕͍มɺԿͷ͔͔Δ
Α͏ʹɺͪΌΜͱҙຯͷ͋Δ໊લʹ͢Δ
͜ͱ
# -*- coding:utf-8 -*-
_value = 0
def foo():
global _value
_value = 10
y = 20
print(_value, y)
foo() # => 10, 20
Slide 14
Slide 14 text
HMPCBMจͷҐஔ
w HMPCBMจؔͷઌ಄Ͱͳͯ͘ಈ͘
w ͨͩ͠ɺಡΈʹ͍͘ͷͰHMPCBMจؔ
ͷઌ಄͕͍͍ʢݸਓͷײʣ
# -*- coding:utf-8 -*-
_value = 0
def foo():
y = 20
global _value # OK
_value = 10
print(_value, y)
foo() # => 10,20
Slide 15
Slide 15 text
༨ஊ
w ʮάϩʔόϧʯ࣮ͬͯਖ਼֬Ͱͳ͍
w ຊདྷɺͦͷ··ͰϞδϡʔϧείʔϓ֎͔ΒಁաͰͳ͍͔Β
w ศ্ٓɺʮϞδϡʔϧείʔϓʯͷ͜ͱΛʮάϩʔόϧʯͱݺΜͰ͍Δ
w 1ZUIPOͷެࣜจॻͰʮάϩʔόϧมʯΘΕ͍ͯΔ
ଞͷϞδϡʔϧείʔϓͷมࢀর
w Α༷ͦͷάϩʔόϧมΛɺࣗͷͱ͜Ζ
ͷάϩʔόϧมͱͯ͠͏
# -*- coding:utf-8 -*-
from mymod import *
def print_val():
print(val)
def set_val(num):
global val
val = num
print_val() # => 0
set_val(456)
print_val() # => 456
SVOQZ
# -*- coding:utf-8 -*-
val = 0
NZNPEQZ
Slide 18
Slide 18 text
ଞͷϞδϡʔϧείʔϓͷมࢀর
w ͞Βʹࣗͷͱ͜ΖͰάϩʔόϧมΛ࡞
ΔͱɺNZNPEWBM͕ݟ͑ͳ͘ͳΔ
w ͭ·Γ͜͏͍͏ॻ͖ํΛ͖͢Ͱͳ͍
# -*- coding:utf-8 -*-
from mymod import *
val = 999
def print_val():
print(val)
def set_val(num):
global val
val = num
print_val() # => 999
set_val(456)
print_val() # => 456
SVOQZ
# -*- coding:utf-8 -*-
val = 0
NZNPEQZ
Slide 19
Slide 19 text
༨ஊ̎
w ̎֊Ҏ্ͷ֊ͰɺHMPCBMจࢀরʹ͑Δ
w ͦͦϩʔΧϧมͱಉ໊͡લͷάϩʔόϧม໊ɺͲ͏͔ͱࢥ͏
Αɺͱ͍͏͜ͱͰඇਪͰ͢
w ໘ͳͷͰɺOPOMPDBMจͷ͠·ͤΜ
Slide 20
Slide 20 text
άϩʔόϧมͷࢀর
w ̎֊ͷؔఆٛͷྫ
# -*- coding:utf-8 -*-
x = 0
def func01():
x = 99
def func02():
# global x
print('func02', x)
func02()
print('func01', x)
func01()
=> func02 99
=> func01 99
SFTVMU
Slide 21
Slide 21 text
άϩʔόϧมͷࢀর
w ̎֊ͷؔఆٛͷྫ
ʢHMPCBMจՃʣ
# -*- coding:utf-8 -*-
x = 0
def func01():
x = 99
def func02():
global x
print('func02', x)
func02()
print('func01', x)
func01()
=> func02 0
=> func01 99
SFTVMU
Slide 22
Slide 22 text
༨ஊ
w ಉ໊ͷϩʔΧϧมͱάϩʔόϧมɺಉ͡είʔϓͰ͑ͳ͍
$ python3 sample.py
File "sample.py", line 8
global x
^
SyntaxError: name 'x' is used
prior to global declaration
# -*- coding:utf-8 -*-
x = 0
def foo():
x = 10
print(x)
global x
x = 20
print(x)
foo()
SFTVMU