コロン重要
def foo(x):
if (x % 15 == 0):
return 'FizzBuzz'
if (x % 3 == 0):
return 'Fizz'
if (x % 5 == 0):
return 'Buzz'
Pythonはインデントでブロックを見るもの
と思っていたけれど、ブロックの開始はコ
ロンを見ている
Slide 4
Slide 4 text
self重要
class Foo:
def bar(x):
return x * x
def baz(self, y):
return y ** y
クラスメソッド
インスタンスメソッド
Slide 5
Slide 5 text
変数のスコープ
x = 10
def foo():
return x
foo()
=> 10
x = 10
def bar():
tmp = x
x = 0
return x
bar()
=> どうなる?
Slide 6
Slide 6 text
変数のスコープ
x = 10
def foo():
return x
foo()
=> 10
x = 10
def bar():
tmp = x
x = 0
return x
bar()
=> エラー
in
bar()
7
8 def bar():
----> 9 tmp = x
10 x = 0
11 return x
UnboundLocalError: local variable 'x'
referenced before assignment
Slide 7
Slide 7 text
変数のスコープ
x = 10
def foo():
return x
foo()
=> 10
x = 10
def bar():
tmp = x
x = 0
return x
bar()
=> エラー
in
bar()
7
8 def bar():
----> 9 tmp = x
10 x = 0
11 return x
UnboundLocalError: local variable 'x'
referenced before assignment
代入がある時点でローカル変数と判定される
Slide 8
Slide 8 text
変数のスコープ
x = 10
def foo():
return x
foo()
=> 10
x = 10
def bar():
tmp = x
x = 0
return x
bar()
=> エラー
in
bar()
7
8 def bar():
----> 9 tmp = x
10 x = 0
11 return x
UnboundLocalError: local variable 'x'
referenced before assignment
代入がある時点でローカル変数と判定される
でもローカル変数がまだ定義されてない!!
Slide 9
Slide 9 text
いっぽうその頃Rubyは…
x = 10
foo = -> {
tmp = x
x = 0
return x
}
foo.call()
=> 0
x
=> 0
Slide 10
Slide 10 text
いっぽうその頃Rubyは…
x = 10
foo = -> {
tmp = x
x = 0
return x
}
foo.call()
=> 0
x
=> 0
いつもどおりのゆるふわ具合で安心(?)
Slide 11
Slide 11 text
いっぽうその頃Rubyは…
x = 10
foo = -> {
tmp = x
x = 0
return x
}
foo.call()
=> 0
x
=> 0
いつもどおりのゆるふわ具合で安心(?)
この辺は好みもあるとは思いますが