점프투파이썬
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 |