ch02

### 01.
*파이썬은 편리하게 공유할 수 있는 모듈과 배포 유틸리티  
프로그램을 지원합니다.  
**모듈은 작성한 코드를 공유하기 쉽게 구조화합니다.  
**배포 유틸리티 모듈을 전 세계에 공유할 수 있게 해 줍니다.  
*작성한 함술르 모듈로 바꾸고, 배포 유틸리티를 사용해서  
여러분의 모듈을 전체 파이썬 커뮤니티에 공유할수 있다.


###02. 함수를 모듈로 바꾸기
*모듈은 파이썬 코드가 들어 있는 텍스트 파일
*파이썬 모듈은 파일 이름이 .py 확장자로 끝나기만 하면 된다.

```python
>def print_lol(the__list):  
>>for each_item in the__list:  
>>>		if isinstance(each_item, list):  
			print_lol(each_item)  
		else:  
			print(each_item)  
```


###03.
PyPi(Python Package Index, 파이썬 패키지 인덱스)는 인터넷에서
써드파티 파이썬 모듈을 제공하는 중앙 리포지토리(저장소) 입니다.


###04. 코드에 주석 추가하기
* """, '''
```python
'''이 파일은 nester.py 모듈이며, print_lol() 함수 하나를 제공합니다.
이 함수는 포함된 리스트가 있을 경우 그것을 포함해서 모든 항목을
화면에 출력합니다.'''
```


###05. 배포준비
① 먼저 모듈을 위한 폴더를 만드세요.
	만들어진 폴더에 nester.py 파일을 복사
② 새로 만든 폴더에 setup.py 파일 만들기
	이 파일은 배포 패키지에 대한 메타데이터를 갖는다.
③ 배포 패키지 만들기
	터미널 창에서 nester 폴더로 이동 후 python3 setup.py sdist 입력
④ 배포 패키지를 파이썬 환경에 설치
	터미널 창이나 도스 창에서 sudo python3 setup.py install 입력


###06. 모듈 사용하기(확장자는 입력하지 않는다)
	import nester


###07. 파이썬 모듈은 네임스페이스를 만듭니다
* 파이썬의 모든 모듈은 네임스페이스에 연결되어 있다.
* 모듈은 코드를 모듈 이름과 같은 네임스페이스에 넣는다
* 따라서 모듈에 있는 코드는 nester 라는 네임스페이스에 연결된다.
* nester.print_lol(movies)


###08.
http://pypi.python.org/ 에 접속해서 아이디를 만들고 이메일 인증을 하면됨
$python3 setup.py register 입력후 아이디 비밀번호 등록

###09. 파이썬 함수
#####list()
######데이터 객체를 만드는 함수로써, 빈 리스트를 만든다
#####range()
######필요에 따라 주어진 범위의 일련의 숫자를 생성하는 나열자를 반환한다.
#####enumerate()
######0부터 시작해서 번호가 매겨진 데이터의 리스트를 만든다.
#####int()
######문자열이나 다른 숫자를 정수로 변환한다.
#####next()
######리스트와 같은 나열할 수 있는 데이터 구조체에서 다음 항목을 반환한다.


>for num in range(4):
>>	print(num)
>>>
화면에 0,1,2,3 출력


###09.
*파이썬은 실행하기 전까지는 코드의 무결성을 완전히 확인하지는 않는다.
*이런 특성 덕분에 파이썬은 다른언어에서는 불가능한 일들을 해낼 수 있다.
*런타임에 함수를 동적으로 정의할 수 있다.
*정적으로 형을 확인하는 컴파일 언어에서는 에러로 잡히는 것이,
*파이썬에서는 모르고 넘어가기 때문에 조심해야 한다.


```python
>def print_lol(the__list, indent = False, level = 0):
>>	for each_item in the__list:
>>>		if isinstance(each_item, list):
			print_lol(each_item, indent, level + 1)
		else:
			if indent:
				print("\t" * level, end='')
			print(each_item)
```