Practical Python Programming - 2.1 자료형과 자료 구조
email_address = None
None
은 주로 선택값(optional value)이나 누락값(missing value)을 표시하는 데(placeholder) 사용한다.
조건문에서는 False로 평가한다.
if email_address:
send_email(email_address, msg)
주식 보유 정보의 예를 살펴 보면 아래와 같다.
구글(GOOG) 주식을 490.10 달러에 100주 보유
이 '객체'는 세 부분으로 구성 된다.
종목명 (문자열 "GOOG")
주식 개수(정수형 100)
주식 가격(부동소수점 490.10)
Tuple
은 함께 묶인 값의 Collection이다.
s = ('GOOG', 100, 490.1)
()
를 생략 하기도 한다.
s = 'GOOG', 100, 490.1
Tuple
은 주로 단순한 레코드 또는 자료 구조를 표현하는 데 사용한다.
일반적으로 여러 부분으로 된 단일 객체다.
튜플은 데이터베이스 테이블의 단일 행과 비슷
튜플의 항목은 순서가 있다.
배열과 비슷
s = ('GOOG', 100, 490.1)
name = s[0] # 'GOOG'
shares = s[1] # 100
price = s[2] # 490.1
하지만 생성된 Tuple
의 내용은 수정할 수 없다.
>>> s[1] = 75
TypeError: object does not support item assignment
현재 튜플을 가지고 새로운 튜플을 만들 수는 있다.
s = (s[0], 75, s[2])
Tuple
은 서로 관련된 항목들을 단일 엔티티(entity)로 묶는 역할을 한다.
s = ('GOOG', 100, 490.1)
Tuple
을 단일 객체로써 프로그램의 다른 부분으로 쉽게 전달할 수 있다.
Tuple
을 전달받은 후에는 풀어서 각각의 변수를 사용할 수 있다.
name, shares, price = s
print('Cost', shares * price)
왼쪽의 변수 개수가 튜플 구조와 일치해야 한다.
name, shares = s # 오류
Traceback (most recent call last):
...
ValueError: too many values to unpack
Tuple
은 읽기 전용 List
처럼 보인다.
그러나, Tuple
의 주된 용도는 여러 부분으로 구성된 단일 항목으로서 사용하는 것이다.
List
는 고유한 항목들의 Collection으로 사용되며, 이때 모든 항목이 같은 타입인 경우가 많다.
record = ('GOOG', 100, 490.1)
# 포트폴리오의 한 레코드를 나타내는 튜플
symbols = [ 'GOOG', 'AAPL', 'IBM' ]
# 세 가지 주식 심벌을 나타내는 리스트
Dictionary
는 키(key)를 값(value)에 대응(mapping)시킨다.
해시 테이블(hash table) 또는 연관 배열(associative array)이라고도 부른다.
키는 값에 접근하는 인덱스 역할을 한다.
s = {
'name': 'GOOG',
'shares': 100,
'price': 490.1
}
Dictionary
에서 값을 얻으려면 키 이름을 사용한다.
print(s['name'], s['shares'])
# GOOG 100
s['price']
# 490.10
값을 추가하거나 수정할 때 키 이름을 사용한다.
s['shares'] = 75
s['date'] = '6/6/2007'
>>> 'shares' = 75, 'date' = '6/6/2007'
값을 삭제하려면 del 문을 사용한다.
del s['date']
>>>
Dictionary
는 서로 다른 값이 많이 있고 그 값들을 수정 또는 조작해야 할 때 유용하다.
Dictionary
를 사용하면 코드의 가독성이 높아진다.
s['price']
# vs
s[2]