파이선… 썬인가? 뭐 어쨌든<br />문법조금만더<br />
개발의 기초<br />
내가 개발 좀 해봐서 아는데….<br />
For 와 if<br />두 개만 있으면 다 된다…라고 좀 해본분이 말씀하셨음<br />
근데 지금은 뭐가 많다<br />
파이써닉??<br />
<ul><li>최대한 효율적인 소규모 코딩패턴
별거 아닌거 길게 쓰지 말자
짧은코드가 더 빠를수도 있다.</li></li></ul><li>List Comprehension<br />
학교에서 배운거<br />for(i=0;i<10;i++)<br />{<br />arr[i]=doSomthing(i);<br />}<br />
배운대로한거<br />foriinrange(10):<br />lst.append(doSomthing(i))<br />
Pythonic<br />[doSomthing(i)foriinrange(10)]<br />
dJango<br />user_obj._group_perm_cache=<br />set(["%s.%s"%(ct,name)<br />forct,nameinperms])<br />
왜?<br />파이썬에서 루프 돌려서 리스트 만드는건 비효율적<br />인터프리터가 매 루프마다 리스트의 변화를 처리<br />어떤 요소를 다룰지 추적하기위한 카운터를 유지해야함<br />
이터레이터와제너레이터<br />
이터레이터는<br />두가지만 기억하세요 <br />next, __iter__<br />
classMyIterator(object):<br />def__init__(self,step):<br />self.step=step<br />defnext(self):<br />"""Returns the next ele...
제너레이터<br />Range() VS xRange()<br />그냥 함수<br />호출될때<br />리스트를 다 만듦<br />그때그때 <br />필요한 만큼만<br />생성<br />
리스트가 필요할때<br />파이스닉하게<br />찔끔찔끔<br />
yield<br />deffibonacci():<br />a,b=0,1<br />whileTrue:<br />yieldb<br />a,b=b,a+b<br />fib=fibonacci()<br />[fib.next()fo...
defpsychologist():<br />print'Please tell me your problems'<br />whileTrue:<br />answer=(yield)<br />ifanswerisnotNone:<br...
>>> free = psychologist()<br />>>> free.next()<br />Please tell me your problems<br />>>> free.send('I feel bad')<br />Don...
Coroutines<br />Native Support Language<br />Io (http://iolanguage.com)<br />Or<br />Lua (http://www.lua.org)<br />
Coroutines in Python<br />원래는 없음<br />Stackless Python 의 Continuation<br />근데 yield 가 거의 비슷함<br />Multitask 모듈로 구현<br />
importmultitask<br />importtime<br />defcoroutine_1():<br />foriinrange(3):<br />print'c1'<br />yieldi<br />defcoroutine_2...
>>> multitask.run()<br />c1<br />c2<br />c1<br />c2<br />c1<br />c2<br />
아 진짜 근데 못 쓰겠어<br />파이스닉<br />
Upcoming SlideShare
Loading in …5
×

파이선 문법 조금만더

1,467 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,467
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

파이선 문법 조금만더

  1. 1. 파이선… 썬인가? 뭐 어쨌든<br />문법조금만더<br />
  2. 2. 개발의 기초<br />
  3. 3. 내가 개발 좀 해봐서 아는데….<br />
  4. 4. For 와 if<br />두 개만 있으면 다 된다…라고 좀 해본분이 말씀하셨음<br />
  5. 5. 근데 지금은 뭐가 많다<br />
  6. 6. 파이써닉??<br />
  7. 7. <ul><li>최대한 효율적인 소규모 코딩패턴
  8. 8. 별거 아닌거 길게 쓰지 말자
  9. 9. 짧은코드가 더 빠를수도 있다.</li></li></ul><li>List Comprehension<br />
  10. 10. 학교에서 배운거<br />for(i=0;i<10;i++)<br />{<br />arr[i]=doSomthing(i);<br />}<br />
  11. 11. 배운대로한거<br />foriinrange(10):<br />lst.append(doSomthing(i))<br />
  12. 12. Pythonic<br />[doSomthing(i)foriinrange(10)]<br />
  13. 13. dJango<br />user_obj._group_perm_cache=<br />set(["%s.%s"%(ct,name)<br />forct,nameinperms])<br />
  14. 14. 왜?<br />파이썬에서 루프 돌려서 리스트 만드는건 비효율적<br />인터프리터가 매 루프마다 리스트의 변화를 처리<br />어떤 요소를 다룰지 추적하기위한 카운터를 유지해야함<br />
  15. 15. 이터레이터와제너레이터<br />
  16. 16. 이터레이터는<br />두가지만 기억하세요 <br />next, __iter__<br />
  17. 17. classMyIterator(object):<br />def__init__(self,step):<br />self.step=step<br />defnext(self):<br />"""Returns the next element."""<br />ifself.step==0:<br />raiseStopIteration<br />self.step-=1<br />returnself.step<br />def__iter__(self):<br />"""Returns the iterator itself."""<br />returnself<br />forelinMyIterator(4):<br />printel<br />
  18. 18. 제너레이터<br />Range() VS xRange()<br />그냥 함수<br />호출될때<br />리스트를 다 만듦<br />그때그때 <br />필요한 만큼만<br />생성<br />
  19. 19. 리스트가 필요할때<br />파이스닉하게<br />찔끔찔끔<br />
  20. 20. yield<br />deffibonacci():<br />a,b=0,1<br />whileTrue:<br />yieldb<br />a,b=b,a+b<br />fib=fibonacci()<br />[fib.next()foriinrange(10)]<br />
  21. 21. defpsychologist():<br />print'Please tell me your problems'<br />whileTrue:<br />answer=(yield)<br />ifanswerisnotNone:<br />ifanswer.endswith('?'):<br />print("Don't ask yourself too much questions")<br />elif'good'inanswer:<br />print"A that's good, go on"<br />elif'bad'inanswer:<br />print"Don't be so negative"<br />
  22. 22. >>> free = psychologist()<br />>>> free.next()<br />Please tell me your problems<br />>>> free.send('I feel bad')<br />Don't be so negative<br />>>> free.send("Why I shouldn't ?")<br />Don't ask yourself too much questions<br />>>> free.send("ok then i should find what is good for me")<br />A that's good, go on<br />
  23. 23. Coroutines<br />Native Support Language<br />Io (http://iolanguage.com)<br />Or<br />Lua (http://www.lua.org)<br />
  24. 24. Coroutines in Python<br />원래는 없음<br />Stackless Python 의 Continuation<br />근데 yield 가 거의 비슷함<br />Multitask 모듈로 구현<br />
  25. 25. importmultitask<br />importtime<br />defcoroutine_1():<br />foriinrange(3):<br />print'c1'<br />yieldi<br />defcoroutine_2():<br />foriinrange(3):<br />print'c2'<br />yieldi<br />>>>multitask.add(coroutine_1())<br />>>>multitask.add(coroutine_2())<br />
  26. 26. >>> multitask.run()<br />c1<br />c2<br />c1<br />c2<br />c1<br />c2<br />
  27. 27. 아 진짜 근데 못 쓰겠어<br />파이스닉<br />
  28. 28. 감사합니다<br />

×