**함수
global 예약어로 어떤 변수를 전역변수로 사용 가능.
변수의 스코프를 다른 말로 네임스페이스namespace라고 함.
**람다
익명함수라고도 함.
ex)문자열이 다양한 순서대로 정렬
strings = ['foo', 'card', 'bar', 'aaaa', 'abab']
strings.sort(key = lambda x : len(set(list(x))))
strings
#out: ['aaaa', 'foo', 'abab', 'bar', 'card']
ex) 숫자 배열 내림차순 정렬
a = [1,3,2,6,4,5,2]
a.sort(key = lambda x: -x)
a
#out: [6, 5, 4, 3, 2, 2, 1]
**제너레이터
제너레이터란 순회 가능한 객체. 제너레이터를 생성하려면 함수에서 return 대신 yield 예약어 사용
제너레이터로부터 값을 요청해야 제너레이터의 코드가 실행된다.
def squares(n=10):
print('Generating squares from 1 to {}'.format(n**2))
for i in range(1, n+1):
yield i**2
gen = squares()
gen #out: <generator object squares at 0x0000021901407318>
for x in gen:
print(x, end=' ')
#out:
#Generating squares from 1 to 100
#1 4 9 16 25 36 49 64 81 100
함수로 제너레이터를 생성하는 것보단 제너레이터 표현식(comprehension) 사용이 더 간단함.
gen = (x**2 for x in range(100))
**itertools 모듈 (122pg)
데이터 알고리즘을 위한 많은 제너레이터 포함함.
groupby, product, combinations, permutations
**예외처리
try/except/else/finally. except 다음에 무시할 오류의 종류를 적어도 됨. (여러개 무시할거면 괄호로)
#float(x)에서 typeError, ValueError이외의 예외를 던지면
#except구문을 아니면 try구문을 실행.
def func_float(x):
try:
return float(x)
except: (TypeError, ValueError):
return x
f = open(path, 'w')
try:
write_file(f)
except: #try에서 예외 던질 시
print('failed')
else: #try에서 예외 던지지 않을 시
print('succeeded')
finally: #try결과 상관없이 항상 수행
f.close()
**파일
위와 같은 파일을 한줄 씩 읽는 코드
path = 'test.txt'
f = open(path) #default로 읽기전용모드 'r'
lines = [x for x in f]
lines #out: ['abc\n', 'def\n']
lines = [x.rstrip() for x in f]
lines #out: ['abc', 'def']
f.close()
with문으로 간단하게 쓸 수 있음. 자동으로 닫아줌
with opne(path) as f:
lines = [x.strip() for x in f]
c++과 유사하게 f.seek(), read(), tell()등으로 파일 일부만 읽을 수 있음.
비-아스키 텍스트 데이터가 포함된 데이터를 다뤄야 한다면 파이썬의 유니코드 관련 내용을 숙지해야 한다.
'ML&DATA > python for data analysis' 카테고리의 다른 글
pandas - (Series, DataFrame, Index) (0) | 2020.07.19 |
---|---|
numpy 기본 : 배열과 벡터 연산 (0) | 2020.07.19 |
파이썬 - (내장 자료구조, 리스트 표기법) (0) | 2020.07.18 |
파이썬 - (시멘틱, 바인딩, 타입 등) (0) | 2020.07.18 |
파이썬 메모 (0) | 2020.07.18 |