본문 바로가기
Software Science

[Python] 2018.03.25 점프투파이썬

by 101Architect 2018. 3. 25.

점프투파이썬 

https://wikidocs.net/book/1


a, b, c 는 정말 같은 객체를 가리키는 걸까?

파이썬에는 입력한 자료형에 대한 참조 개수를 알려주는 sys.getrefcount 라는 함수가 있다. 

------------

>> a = 3

>> sys.getrefcount(3)

31

>> b = 3

>> sys.getrefcount(3)

32

>> c = 3

>> sys.getrefcount(3)

33

------------

모두 같은 객체를 가리키다. 


리스트에 변수를 넣고 복사하고자 할 때 

* 슬로우카피

>> a = [1,2,3]

>> b = a

a, b 같은 객체를 가르키다. 

* 딥카피 

>> b = a[:]

>> b = copy(a)

딥카피 시 둘은 다른 객체가 된다. 


for 문 2개 이상 사용, for 문 한줄쓰기, for 문 싱글라인 

[ 표현식 for 항목1 in 반복 가능 객체1 if 조건1

for 항목2 in 반복 가능 객체2 if 조건2

....

for 항목n in 반복 가능 객체n if 조건n ]


def func(name, old, man=True) 

초기화시키고 싶은 입력 변수들을 항상 뒤쪽에 위치시키는 것을 잊지 말자.


def sum(self, a, b):

result = a+b

pey.sum(pey, 1,1) 이 아닌 pey.sum(1,1) 이 가능 

pey.sum(1,1) 은 Service.sum(pey, 1,1) 처럼 사용해도 동일한 결과를 얻는다. 


a = FourCal()

b = FourCal()

클래스에 의해서 생성된 객체들은 다른 객체들과 완전히 다른 저장 공간을 가지고 독립적으로 동작한다는 것을 잊지 말자.


if __name__ =="__main__":

......

.py 파일을 실행시켰을 때는 __name__ =="__main__" 이 참이 되어 if 문 다음 문장들이 수행된다. 

반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러서 사용 할 때는 거짓이 되어 수행되지 않는다. 


__init__.py 용도 

해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 만약 game, sound, graphic 등 패키지에 포함된 디렉터리에 __init__.py 파일이 없다면 패키지로 인식되지 않는다. 

python3.3 버전부터는 파일이 없어도 인식된다. 하지만 하위버전 호환을 위해 생성하는 것이 안전하다. 


python/game/sound/__init__.py

__all__=['echo']

__all__ 이 의미하는 것은 sound 디렉터리에서 * 기호를 이용하여 import 할 경우 이곳에 정의된 echo 모듈만 import 된다는 의미 

착각하기 쉬운데 from game.sound.echo import * 는 __all__과 상관없이 무조건 import 된다. 이렇게 __all__ 과 상관없이 무조건 import 되는 경우 from a.b.c import * 에서 from 마지막 항목인 c 가 모듈인 경우다. 



반응형

'Software Science' 카테고리의 다른 글

[Linux] path 확인 별칭  (0) 2018.04.01
[Linux] 리눅스 명령어 모음  (0) 2018.04.01
[Linux] vi&vim 편집기 설정하기  (0) 2018.04.01
[Linux] 기초 리눅스 강좌  (0) 2018.03.29
실무로 배우는 빅데이터 기술  (0) 2018.03.28