Slide 1

Slide 1 text

ࢲͷ஌Βͳ͍ 1ZUIPOͷੈք !NBTTZVV 1Z'VLVPLB ʙσίϨʔλʔΛͦ͑ͯʙ

Slide 2

Slide 2 text

ࣗݾ঺հ !NBTTZVV 1ZUIPO͸झຯͰ࢖ͬͯ·͢ ͔Β͋͛ΛࡇΓਸΊΔΤϯδχϟʔ ϑϩϯτ͔ΒόοΫΤϯυ·Ͱ޿͘ઙ͘ 4PTJBM UXJUUFSNBTT@TTO DPOOQBTTɿNBTTZVV

Slide 3

Slide 3 text

ࠓ೔ͷ͓࿩͸ 1ZUIPOΛ࢖͍࢝Ίͯ ʮ΄΄͏ʯ ͱࢥͬͨ͜ͱΛ 5JQTతʹ·ͱΊ·ͨ͠

Slide 4

Slide 4 text

ࠓ೔ͷ͓࿩͸ 1ZUIPOΛ࢖͍࢝Ίͯ ʮ΄΄͏ʯ ͱࢥͬͨ͜ͱΛ 5JQTతʹ·ͱΊ·ͨ͠

Slide 5

Slide 5 text

ࠓ೔ͷ͓࿩͸ ߴ֊ؔ਺ͬͯͳΜ͡Ό͍ʁ σίϨʔλʔͬͯͳΜ͡Ό͍ʁ ͱ͍͏͓࿩Ͱ͢

Slide 6

Slide 6 text

͓඼ॻ͖ ɾpMUFSɺNBQɺSFEVDF ɾߴ֊ؔ਺ ɾσίϨʔλʔ ɾδΣωϨʔλʔ ɾ಺แදهͱ͔ͱ͔

Slide 7

Slide 7 text

஫ҙ ࠓճ͸1ZUIPOͰͷ͓࿩Ͱ͢ ʢ1ZUIPOͱ͸ॻ͖ํ͕ҟͳΔ৔߹͕͋Γ·͢ʣ

Slide 8

Slide 8 text

pMUFS NBQ ΠςϨʔλΛ౉͢ͱɺͦΕͧΕରԠͨ͠ॲཧΛߦͬͯ ΠςϨʔλΛฦͯ͘͠ΕΔ ʢิ଍ʣ ɹɹɹ1ZUIPOɿΠςϨʔλΛฦ͢ ɹɹɹ1ZUIPOɿϦετΛฦ͢

Slide 9

Slide 9 text

pMUFS ৚݅ʹҰக͢ΔཁૉͷΈΛநग़͢Δ ྫ #ۮ਺Λฦ͢ def is_even(val): if val % 2 == 0: return val print(list(filter(is_even, range(1,10)))) >>>[2, 4, 6, 8] #LambdaΛ࢖ͬͯॻ͘ͱ print(list(filter(lambda x: x % 2 == 0, range(1, 10)))) >>>[2, 4, 6, 8]

Slide 10

Slide 10 text

NBQ શͯͷཁૉʹॲཧΛߦͬͨ݁ՌΛฦ͢ ྫ #ഒฦͩ͠ʂ def double(val): return val * 2 print(list(map(double, range(1,10)))) >>>[2, 4, 6, 8, 10, 12, 14, 16, 18] #LambdaΛ࢖ͬͯॻ͘ͱ print(list(map(lambda x: x * 2, range(1, 10)))) >>>[2, 4, 6, 8]

Slide 11

Slide 11 text

SFEVDF શͯͷཁૉΛ·ͱΊΔ ʢ1ZUIPȌͰ͸GVODUPPMTͷΠϯϙʔτ͕ඞཁʣ ྫ import functools #ͻͨ͢Β଍ͯ͠ฦ͢ def add(val1, val2): return val1 + val2 print(functools.reduce(add, range(1,10))) >>>45 #LambdaΛ࢖ͬͯॻ͘ͱ print(functools.reduce(lambda x, y:x + y, range(1,10))) >>>45

Slide 12

Slide 12 text

ߴ֊ؔ਺ ߴ֊ؔ਺͸ؔ਺ΛҾ਺ʹͨ͠Γɺ͋Δ͍͸ؔ਺Λ໭Γ஋ͱ͢Δ΋ͷͰ͋Γɺ Ҿ਺΍໭Γ஋ͷؔ਺΋·ͨߴ֊ؔ਺ͱͳΓಘΔɻ 8JLJ1FEJBʹΑΔͱ

Slide 13

Slide 13 text

ߴ֊ؔ਺ Ҿ਺ʹؔ਺Λ࣋ͭؔ਺ ໭Γ஋͕ؔ਺ʹͳΔؔ਺ ΄΄͏ɾɾɾʁ ߴ֊ؔ਺͸ؔ਺ΛҾ਺ʹͨ͠Γɺ͋Δ͍͸ؔ਺Λ໭Γ஋ͱ͢Δ΋ͷͰ͋Γɺ Ҿ਺΍໭Γ஋ͷؔ਺΋·ͨߴ֊ؔ਺ͱͳΓಘΔɻ 8JLJ1FEJBʹΑΔͱ

Slide 14

Slide 14 text

ͨͱ͑͹͜Μͳߴ֊ؔ਺ PVUFS ͷҾ਺ʹIFMMP Λ౉͢ PVUFS ͷதͰJOOFS Λฦͯ͠Δ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka def hello(): print ("Hello PyFukuoka!") #࣮ߦ outer(hello) >>> before execute >>> Hello PyFukuoka! >>> after execute

Slide 15

Slide 15 text

࣮ߦ͞Ε͍ͯΔؔ਺ ࣮ߦ͍ͯ͠Δͷ͸PVUFS ผ్IFMMP Λݺͼग़͢͜ͱ΋Մೳ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka def hello(): print ("Hello PyFukuoka!") #࣮ߦ outer(hello) >>> before execute >>> Hello PyFukuoka! >>> after execute

Slide 16

Slide 16 text

ݩͷؔ਺Λ௥Ճ͍͍ͯͪͪ͠ݺͼग़͢ͷʁ ʮ͜ͷؔ਺ΛݺͿͱ͖͸ઈରʹηοτͰݺͿॲཧʯ ͬͯ͋Γ·ͤΜʁ ͨͱ͑͹ɺ ɾϩάΠϯ൑ఆ͸ඞͣ΍Βͳ͍ͱ͍͚ͳ͍ ɾ*O0VUͰϩάग़ྗ͕ඞཁʢࣗྗ4UBDL5SBDFʣ ͳͲͳͲɾɾ ͍͍ͪͪ౉ͯ͠ݺͼग़͢ͷ໘౗Ͱ͢ΑͶʁ

Slide 17

Slide 17 text

ͦ͜ͰσίϨʔλʔ ؆୯ʹ͍͏ͱɺߴ֊ؔ਺ͷϥούʔ ؔ਺ఆٛ࣌ʹʮˏϚʔΫʯΛ͚ͭΔ͜ͱͰɺ ఆٛ͞Εͨؔ਺Λ࣮ߦ͢Δͱ͖ʹࣗಈతʹߴ֊ؔ਺ Λݺͼग़͢͜ͱ͕Ͱ͖Δ

Slide 18

Slide 18 text

ͨͱ͑͹ ઌ΄Ͳͷίʔυ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka def hello(): print ("Hello PyFukuoka!") #࣮ߦ outer(hello) >>> before execute >>> Hello PyFukuoka! >>> after execute

Slide 19

Slide 19 text

IFMMP Λϥοϐϯά σίϨʔλʔΛ࢖͏ͱ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka @outer def hello(): print ("Hello PyFukuoka!") #࣮ߦ hello() >>> before execute >>> Hello PyFukuoka! >>> after execute IFMMP Λݺͼग़ͯ͠΋݁Ռ͸มΘΒͣ

Slide 20

Slide 20 text

IFMMP Λϥοϐϯά σίϨʔλʔΛ࢖͏ͱ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka @outer def hello(): print ("Hello PyFukuoka!") #࣮ߦ hello() >>> before execute >>> Hello PyFukuoka! >>> after execute ΍ͬͯΔ͜ͱ͸ EFGIFMMP QSJOU lIFMMP1Z'VLVPLBz IFMMPPVUFS IFMMP IFMMP ͱಉ͜͡ͱ

Slide 21

Slide 21 text

࣮ߦ͞Ε͍ͯΔ໊લʹ஫ҙ ͜ͷ৔߹ɺPVUFSσίϨʔλʔΛద༻ͨ࣌͠఺Ͱ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka @outer def hello(): print ("Hello PyFukuoka!") #࣮ߦ͞Ε͍ͯΔؔ਺໊ print(hello.__name__) >>> inner ࣮ࡍʹ࣮ߦ͞ΕΔؔ਺͕ೖΕସΘΔ

Slide 22

Slide 22 text

΋ͱͷؔ਺৘ใΛอ͓࣋ͯͨ͘͠Ίʹ͸ GVODUPSTXSBQTσίϨʔλΛ࢖͏

Slide 23

Slide 23 text

GVODUPPMTXSBQTΛσίϨʔτ͢Δ ݩʑͷؔ਺৘ใΛͦͷ··දࣔ͢Δ͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨʂ #࣮ߦલޙʹςΩετΛࠩ͠ࠐΉΑʂ def outer(func): @functools.wraps(func) def inner(): print("before execute") func() print("after execute") return inner() #͜Μʹͪ͸PyFukuoka @outer def hello(): print ("Hello PyFukuoka!") #࣮ߦ͞Ε͍ͯΔؔ਺໊ print(hello.__name__) >>> hello

Slide 24

Slide 24 text

؆୯ʹ·ͱΊΔͱ ɾߴ֊ؔ਺͸Ҿ਺΍໭Γ஋ʹؔ਺͕͋Δؔ਺ ɾσίϨʔλʔΛ࢖͏ͱߴ֊ؔ਺ͷهड़͕؆୯ʹͳΔ ɾݩؔ਺ͷ৘ใΛอ࣋͢Δʹ͸GVODUPPMTXSBQTΛ࢖͏

Slide 25

Slide 25 text

͓·͚ ࣮ߦݩͷؔ਺ʹҾ਺͕͋Δ৔߹ import functools def outer(func): @functools.wraps(func) def inner(*args, **kwargs): print("before execute") func(*args, **kwargs) print("after execute") return inner @outer() def hello(*args, **kwargs): print(args[0]) print(kwargs["kwargs1"]) #࣮ߦ hello("hello", kwargs1 = "PyFukuoka") >>> before execute >>> hello >>> PyFukuoka >>> after execute

Slide 26

Slide 26 text

͓·͚ σίϨʔλʹ΋࣮ߦݩͷؔ਺ʹ΋Ҿ਺͕͋Δ৔߹ import functools def outer(*dec_args, **dec_kwargs): def middle(func): @functools.wraps(func) def inner(*args, **kwargs): print(dec_args[0]) print("before execute") func(*args, **kwargs) print("after execute") print(dec_kwargs["dec_kwargs1"]) return inner return middle #͜Μʹͪ͸PyFukuoka @outer("decorator args1", dec_kwargs1 = "decorator kwargs1") def hello(*args, **kwargs): print(args[0]) print(kwargs["kwargs1"]) #࣮ߦ hello("hello", kwargs1 = "PyFukuoka") >>> decorator args1 >>> before execute >>> hello >>> PyFukuoka >>> after execute >>> decorator kwargs1

Slide 27

Slide 27 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠