python - print - 파이썬 rstrip




파이썬 진행 경로-견습생부터 전문가 (13)

나는 일 년 반 동안 파이썬으로 배우고, 일하고, 놀았습니다. 생물학자가 천천히 생물 정보학으로 전환하는 과정에서이 언어는 내가 실험실에서 만든 모든 주요 공헌의 핵심이었습니다. 필자는 파이썬이 아름다운 솔루션을 표현하는 것을 허락하거나, 생각으로부터 실행 가능한 코드로 자연스러운 흐름을 허용하는 언어의 의미론을 어느 정도 사랑에 빠지게되었습니다.

내가 알고 싶은 것은이 포럼이나 다른 포럼에서 거의 보지 못한 질문에 대한 대답입니다. 이 질문은 파이썬 개선 경로에있는 누구에게나 중요한 부분이지만, 다음 단계가 무엇인지 궁금해합니다.

내가 먼저 묻고 싶지 않은 것을 요약하자.)

  • 나는 파이썬을 빨리 배우는 법을 알고 싶지 않다.
  • 나는 그 언어에 익숙해 질 수있는 가장 좋은 방법을 찾고 싶지 않다.
  • 마지막으로, 나는 '모든 일을 해내는 하나의 트릭'을 알고 싶지 않습니다.

나는 당신의 의견을 알고 싶습니다.

도제 과정에서 전문가 상태 (전문 지식이 지시하는 곳이면 어디에서든지 자유롭게 멈추십시오)에서 한 번에 한 단계 씩 더 나은 파이썬 코더가되도록 지속적으로 향상시키기 위해 Python 모범생에게 추천하는 단계는 무엇입니까? 사람들 중 일부는 거의 파이썬의 탁월함을 위해 예배에 합당한 것처럼 보입니다.

내가 좋아할 응답의 종류 (그러나 독자층을 놀라게하는 것이 자유롭게 느껴짐)는 다음과 같이 형식이 정해져 있습니다.

  • 이것을 읽으십시오 (예 : python 튜토리얼). 그런 종류의 세부 사항에주의하십시오.
  • 너무 많은 시간 / 문제 / 코드 라인 코드
  • 그런 다음 이것을 읽으십시오 (예 : this 또는 그 책). 그러나 이번에는이 것에주의하십시오.
  • 실제 문제를 해결하십시오.
  • 그런 다음 Y를 읽으십시오.
  • 이러한 개념을 반드시 파악하십시오.
  • X 시간 코드
  • 그런 기본으로 되돌아 가거나 더 나아가십시오 ...
  • (당신은 요점을 얻는다 :)

나는 진지하게 (당연한 노력을 기울여서) 진전을 이루기 위해 여러 단계에서주의를 기울여야하는 것에 대한 귀하의 의견을 알고 싶어합니다. 특정 분야의 전문 분야에서 온 경우이 분야의 적절한 경로를상의하십시오.

편집 : 귀하의 위대한 의견 덕분에, 나는 파이썬 개선 트랙에있어! 정말 고마워!


학습 알고리즘 / 수학 / 파일 IO / Pythonic 최적화

이렇게하면 전문가가 될 수는 없지만 시작하려면 Project Euler 문제를 해결해 보십시오. 고등학교 수학이 적절하고 Google 방법을 알고 있다면 처음 50 명이 세금을 부과해서는 안됩니다. 당신이 하나를 풀 때 포럼에 들어가서 다른 사람들의 해결책을 찾아 볼 수 있습니다. 괜찮은 생각을하고 솔루션을 게시하지 마십시오. 아이디어는 사람들이 스스로 해결하도록 장려하는 것입니다.

무차별 대입 알고리즘을 사용하면 자신을 파이썬에서 강제로 실행하는 것은 용인되지 않습니다. 이것은 메모리에 큰 데이터 세트를 배치하고 사전과 같은 빠른 언어 기능으로 효율적으로 액세스하는 방법을 알려줍니다.

이 일을 스스로함으로써 나는 배웠다.

  • 파일 입출력
  • 동적 프로그래밍과 같은 알고리즘 및 기술
  • 파이썬 데이터 레이아웃
    • 사전 / 해시 맵
    • 기울기
    • 튜플
    • 다양한 조합 (예 : 사전과 튜플 목록)
  • 발전기
  • 재귀 함수
  • 파이썬 라이브러리 개발하기
    • 파일 시스템 레이아웃
    • 인터프리터 세션 중에 다시 불러 오기

또한 매우 중요하게도

  • 포기하고 C 또는 C ++을 사용할 때!

이 모든 것은 Bioinformatics와 관련이 있어야합니다.

틀림없이 필자는 그 경험을 통해 파이썬의 OOP 기능을 배웠다.



Google은 최근에 온라인 Python 클래스 ( "학습 과정"에서처럼 "클래스")를 발표했습니다.

http://code.google.com/edu/languages/google-python-class/

이 질문이 귀하의 모든 질문에 대한 답변이 아니라는 것을 알고 있지만, 시작하기에 좋은 장소라고 생각합니다!


과학에 파이썬을 사용하고 있다면 (과학자라면), 과학 라이브러리를 배우고 이해하게 될 것입니다.

  • 불쾌한
  • 매트 플롯
  • mayavi / mlab
  • 차코
  • Cython

올바른 라이브러리를 사용하고 코드를 벡터화하는 방법을 아는 것은 과학적 컴퓨팅에 필수적입니다.

나는 이것을 추가하고 싶었습니다. 대용량 숫자 데이터 세트를 일반적인 파이썬 방법 (객체 지향 접근법,리스트, 반복자)으로 처리하는 것은 극히 비효율적 일 수 있습니다. 과학적 컴퓨팅에서는 대부분의 일반적인 파이썬 코더가 데이터에 접근하는 방식과 크게 다른 방식으로 코드를 구조화해야 할 수 있습니다.


나는 당신이 구문의 표현력을 탐색하도록 강요하는 것을 권장한다. 파이썬은 동일한 기능을 작성하는 여러 가지 방법을 허용하지만, 종종 가장 우아하고 빠른 접근 방법이 있습니다. 다른 언어의 관용구에 익숙하다면 더 좋은 방법을 찾거나 받아 들일 수 없습니다. 처음 20 개 정도의 Project Euler 문제로 주말을 보냈고 Google App Engine에서 Django로 간단한 웹 애플리케이션을 만들었습니다. 이것은 어쩌면 견습생에서 초보자에게로 데려다 줄 것입니다.하지만 좀 더 진보 된 웹 응용 프로그램을 계속 작성하고 고급 Project Euler 문제를 해결할 수 있습니다. 몇 달 후에 나는 되돌아 가서 처음 20 개의 체육 문제를 주말 대신에 처음부터 풀었다.


나는 여름에 파이썬 사이트에서 자습서를 실행하여 파이썬을 처음 배웠다. (슬프게도, 나는 그것을 더 이상 찾을 수없는 것 같아서 링크를 게시 할 수 없다.)

나중에 파이썬은 대학 1 학년 과정 중 하나에서 가르쳐주었습니다. 뒤이어 여름에 PythonChallengeGoogle Code Jam의 문제로 연습했습니다. 이러한 문제를 해결하는 것은 알고리즘 관점 에서뿐만 아니라 파이썬이 할 수있는 것을 배우는 관점 에서뿐만 아니라 파이썬을 최대한 활용하기 위해 그것을 조작하는 방법에서도 도움이됩니다.

비슷한 이유로, 나는 코드 골프 도 잘 작동한다고 들었다. 그러나 나는 결코 그것을 시도하지 않았다.


당신이 요구하는 것이 정확하지는 않지만 좋은 조언이라고 생각합니다.

다른 언어를 배우고,별로 중요하지 않습니다. 각 언어마다 배울 수있는 고유 한 아이디어와 규칙이 있습니다. 언어의 차이점과 언어가 다른 why 에 대해 알아보십시오. Haskell과 같은 순수 함수형 언어를 사용해보고 부작용이없는 함수의 몇 가지 이점 (및 과제)을 살펴보십시오. 다른 언어에서 배운 것들을 파이썬에 적용하는 방법을 살펴보십시오.


이미 많은 독서 자료를 가지고 있지만 더 많이 다룰 수 있다면 파이썬 향상 제안, 특히 "Finished"PEP와 "Deferred, Abandoned, Withdrawn, Rejected"를 읽고 파이썬의 진화에 대해 배우는 것이 좋습니다. PEP.

언어가 어떻게 바뀌 었는지, 결정이 내려 졌는지, 그 이유가 무엇인지를 봄으로써 파이썬 철학을 흡수하고 "관용적 인 파이썬"이 어떻게 생겨나는지 이해하게 될 것입니다.

http://www.python.org/dev/peps/


파이썬을 배우기 시작한 다른 사람에게 가르치는 것은 항상 아이디어를 분명히하고 때로는 파이썬에 대한 개념적 생각을 다시 생각하게하는 많은 질문을 학생에게서 얻습니다.



메모리 관리와 관련하여 파이썬의 데이터 유형과 역할을 (더 깊이) 이해합니다.

지역 사회의 일부 분들이 알고 계시파이썬 강좌를 가르치 십니다 . 가장 인기있는 강좌 는 포괄적 인 Intro + Intermediate 강좌뿐만 아니라 다양한 응용 프로그램 개발 영역을 소개하는 "고급"강좌입니다.

꽤 자주 나는 "당신의 소개 과정이나 고급 과정을 수강해야합니까?"라고 한 질문을 한 두 번이나 받았습니다. 저는 이미 파이썬을 1 ~ 2 년 동안 프로그래밍 해왔고, 소개는 너무 단순해서 생각하지 않았습니다. 선진국으로 곧바로 뛰어 오르는 것을 좋아합니다 ... 어느 과정 추천 하시겠습니까? "

그들의 질문에 대답하기 위해, 나는 그들이이 영역에서 얼마나 강하다는 것을 알아 내기 위해 탐구한다. 고급 과정을 준비하고 있는지를 측정하는 것이 아니라 파이썬의 객체에 대한 기본 지식이 얼마나 훌륭한지를 확인하는 것이 가장 좋은 방법이다. 초보자뿐만 아니라 그 이상으로 넘어간 사람들이 작성한 많은 파이썬 버그의 원인이되는 메모리 모델입니다.

이렇게하기 위해 나는이 간단한 2 부분 퀴즈 질문에 그들을 지적한다.

여러 번, 그들은 결과를 얻을 수 있지만, 응답이 더 어렵고 훨씬 더 중요한가 ... "왜"가 80 %의 신용을 얻는 동안 나는 결과를 20 %의 무게로 평가할 것입니다. 그들이 왜 파이썬 경험이 있든 상관없이, 왜 사람들이 포괄적 인 소개 + 중간 과정으로 안내 할 것인가? 왜냐하면 나는 객체와 메모리 관리에 대한 강의를 하나의 시간에 할애해야한다. 출력 및 왜 충분한 신뢰를 가지고 있는지 (1-2 년 후에 파이썬의 구문을 알았 기 때문에 파이썬이 어떻게 작동하는지 훨씬 더 잘 이해할 때까지 "초보자"레이블을 넘을 준비가되지 않습니다.)

비슷한 대답을 요구하는 후속 질문은 더욱 어렵습니다. 예를 들어,

예제 3

x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y

필자가 추천하는 다음 주제는 참조 카운팅을 잘 이해하고, "인턴"이 무엇을 의미하는지 (반드시 사용하지 않아도 됨), 얕은 복사와 깊은 사본 (위의 예 3에서와 같이)을 배우는 것, 마지막으로 다양한 유형과 언어, 즉리스트 대 튜플, 딕셔스 대 세트,리스트 이해력 대 생성자 표현, 반복자 대 생성자 등의 구조. 그러나 다른 모든 제안은 다른 시간에 또 다른 게시물입니다. 그 동안 도움이되기를 바랍니다! :-)

추신. 나는 다른 프로젝트의 소스 코드를 연구하고 두 가지 제안에 강력한 "+1"을 추가 할뿐만 아니라 내성에 더 친밀 해지는 다른 응답에 동의합니다!

pps. 큰 질문 BTW. 나는 처음에는 똑같은 질문을하기에 충분히 똑똑했으면 좋았을 텐데,하지만 그것은 오래 전이었습니다. 이제 저는 수년간 전임 Python 프로그래밍으로 다른 사람들을 도우려고 노력하고 있습니다 !!


모든 데이터 유형 및 구조를 철저히 이해합니다.

모든 유형 및 구조에 대해 유형 또는 데이터 구조의 모든 측면을 사용하는 일련의 데모 프로그램을 작성하십시오. 이렇게하면 블로그마다 메모를 블로그에 게시하는 것이 좋습니다 ... 많은 사람들에게 유용 할 수 있습니다!


def apprentice():
  read(diveintopython)
  experiment(interpreter)
  read(python_tutorial)
  experiment(interpreter, modules/files)
  watch(pycon)

def master():
  refer(python-essential-reference)
  refer(PEPs/language reference)
  experiment()
  read(good_python_code) # Eg. twisted, other libraries
  write(basic_library)   # reinvent wheel and compare to existing wheels
  if have_interesting_ideas:
     give_talk(pycon)

def guru():
  pass # Not qualified to comment. Fix the GIL perhaps?




python