enumerate, zip 함수와 map, 리스트를 생성하는 동시에 for 문을 돌려버린다던지.. 하는 것들
뭔가 다른 언어들과 다른 느낌의 무언가가 굉장히 맘에 들었는데,
깔끔하고 정갈하고 독특하고 자유로운 그런 느낌
같은 문제를 풀어도 10명이면 7명은 코드를 다르게 짠다..
그만큼 확장성이 좋고 개인적인 skeleton 코드를 가지기 좋은 언어라고 생각.
그치만 이렇게 코드를 짧고 간결하게 만들 수 있는데 만족하며
파이썬 언어 자체에 대한 컨셉의 이해도가 낮은 것 같아서 책을 한권 구입함.
Effective Python : 파이썬 코딩의 기술
주로 파이썬은 파이썬 답게 써야 하는 이유를 알려주는 책이다.
파이썬이 어떻게 이러한 특징을 가지게 됬는지,
이러한 특징들로 인해 나는 어떻게 코딩을 해야 하는지 등등
정말 재밌고 동시에 은근히 어렵다.
오늘부터 여기서 배운 내용들을 하나씩 포스팅 하겠슴다
> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Explicit is better than implicit
Call-by-Assignment
파이썬의 함수 호출 방식은 Call-by-Assignment이다.
먼저 Call-by-reference는
함수 호출시 인자로 전달되는 변수의 레퍼런스를 전달한다.
인자로 전달된 레퍼런스를 함수 내부에서 실제 값이 반영되며 C언어의 포인터가 대표적인 예시다.
따라서 실제 값이 바뀌면 인자로 전달된 값도 바뀐다.
Call-by-value는
함수 호출시 전달되는 변수의 값을 복사해서 함수의 인자로 전달된다.
따라서 함수 안에서 인자 값이 변경되도 전달한 외부 변수에는 영향이 가지 않는다.
그리고 파이썬은 call-by-reference도 call-by-assignment도 아닌
call-by-assignment 방식으로 인자를 전달한다.
파이썬에는 모든 것이 객체이고 2가지의 객체가 있다.
1. immnutable object
변경 불가능한 객체라는 뜻으로 일반적인 자료형인 int, float, str과 tuple이 있다.