1. 모듈 호출 방식의 차이
import 모듈명
from 모둘명 import 함수명
의 차이는 한가지.
전자는 모듈을 통째로 가져오므로 모듈명.함수명()을 해야 함수를 사용할 수 있지만
후자는 모듈 내의 해당 함수만 가져오겠다는 의미로 함수명()과 같이 바로 사용할 수 있다.
만약 모듈 내의 모든 함수를 가져와 쓰고싶지만 모듈명을 일일이 붙이기 귀찮다면
from 모듈명 import *를 사용하면 된다.
(*를 사용하면 전체를 불러옴)
2. 모듈에서의 name변수(__name__)
python의 name변수는 모듈명이 할당되는 내부변수이다.
import를 통해 해당 모듈을 불러와 run하면 그때 name은 해당 모듈명이 되고,
만약 함수가 정의되어있는 파일을 run하면 name은 main이 된다.
3. raise와 NotImplementedError 오류
NotImplementedError는 python 내장 오류로, 반드시 구현되어야하는 부분이 구현되지 않았을 때 대신 써놓는 코드이다.
raise 명령어는 강제로 오류를 발생시킬 때 사용하는 명령어이다.
raise문을 사용하면 에러가 발생하므로 돌아가고있는 프로그램이 멈추게된다.(즉,raise문 이후의 코드는 실행되지 않는다.)
4. 오류클래스에서 메시지 출력하기
내장된 오류 클래스가 아니라 새로 오류 클래스를 만들었을경우
해당 클래스에서 오류 메시지가 출력되게 하려면 __str__ 메서드가 클래스 내에 존재해야한다.
__str__ 메서드는 print문을 출력되게 만들어주는 메서드이다.
5. 문자열 포맷의 계산식 바로 계산하기
eval함수를 사용하여 문자열포맷의 계산가능한 식들을 받아 계산할 수 있다.
‘1+3+5’같은 문자열을 바로 계산해낼수 있음.
'"Always" + "Awake"'같이 문자열 사이의 합침 같은것도 가능하다.
6. 반복자료형을 함수에 적용시켜 결과 뽑아내기 : filter 함수와 map 함수
filter함수를 사용하여 반복자료형 요소에서 특정함수에 참인 것들만 돌려받을 수 있다.
리스트, 튜플 등에서 특정 조건을 만족하는 놈들을 빈 리스트 만들지 않고 바로 뽑아낼 수 있을듯.
map함수를 사용하면 반복자료형 요소를 특정함수에 넣은 결과값을 리스트로 돌려받을 수 있다.
7. list함수는 새로운 객체를 만든다
list(반복가능자료형)을 통해 해당 자료형의 요소들을 가지고 있는 리스트를 새로 만들 수 있다.
a=[1,2,3]
b=list(a)
print(b)
이때 b의 출력값은 [1,2,3]이다.
그러나 주의 할 점은 id(a)와 id(b)가 다르다는 것. 즉 list()함수를 통해 만들어진 b는 a와 다르다!
b는 이미 생성되었던 [1,2,3]객체(->a)를 복사한 다른 [1,2,3]객체를 할당받은 것.
이는
a=(1,2,3)
b=list(a)
print(b)
코드를 통해 알 수 있다.
a는 1,2,3 튜플이지만 b는 a 튜플의 요소를 가져와 리스트에 그대로 따 넣은 새 객체이다. 즉, b!=a인 것이다.
8. list함수 sort와 내장함수 sorted의 차이
list.sort()는 해당 리스트를 정렬하고 그 결과를 객체에 저장할 뿐, 어떤 값도 반환하지 않는다.
sorted는 주어진 반복자료(리스트든 문자열이든 튜플이든 상관없이)를 정렬해놓은 ‘리스트’를 반환한다.
'Always Awake > python 기본 정리(19.12.23~20.01.12)' 카테고리의 다른 글
20.01.09 정리 (0) | 2020.01.09 |
---|---|
20.01.06 정리 (0) | 2020.01.07 |
20.01.05 기록 (0) | 2020.01.06 |
19.12.25 기록 (0) | 2019.12.26 |
19.12.24 기록 (0) | 2019.12.24 |
댓글