간단히 말하자면 변수.
파이썬은 객체지향언어로 파이썬의 대부분이 객체로 이루어져 있다고 해도 과언이 아니다.
객체말고는 절차지향언어가 있으며 보완적인 관계이지 대척점에 있는 관계는 아니다.
절차지향언어는 말 그대로 순서대로 흘러간다. 그렇기에 이걸 해라. 저걸 해라. 하나하나 지시해줘야한다. 내가 써봤던 c는 절차지향언어인데, 그 특징으로는 class가 없다는 것이다.
비슷하게나마 객체를 다루는 것이 구조체(struct)지만,
구조체는 class에 비해 많이 부족하다. 상속과 접근제한, 함수선언불가 등의 많은 제약이 따른다.
하지만 파이썬에서는 class를 통한 더욱 구조화된 환경에서 사용할 수 있다.
넓게 본 객체의 의미이고
간단히 객체는 해쉬를 갖는 모든 것이라 보는게 편하다. (정확히는 프로퍼티와 메소드를 쓰는 class에 의미가 더 가깝다.)
#파이썬은 1부터 255까지 주소값이 고정되어 있음.
not, and, or 순으로 판단 (괄호가 없다면)
>>> not True and False or not False
True
>>> ((not True) and False) or (not False)
True
밑에 다룰 것은 시퀀스 자료형이다.
말 그대로 연속적인 자료의 형태인데 메모리를 가질때 자료가 이어져있어서 인덱싱을 사용가능 하다.
list, tuple, range, str (, bytes, bytearray)가 있다.
"""text"""
'''text'''
'text'
"text"
이렇게 모든 방식으로 사용 가능!
a = [] == list()
tuple 특징은 ()로 안묶어도 가능하고 묶어도 가능하다.
>>>a = 1, 2, 3
>>>a
(1, 2, 3)
또, 튜플이 1개의 값을 지니면 단지 값이 됨 그래서 한개의 요소로 만들때는 , 를 붙임
이유 a = (1)과 a = 1은 같기 때문.
즉, a = (1,) 이렇게 정의해야함
>>>type(range(10))
range
>>>range(10) == range(0, 10, 1)
True
range 는 그 자체로 사용할 수 없음. 객체가 아니라 범위이기 때문이다.(아래에서 나올 객체는 주소값을 갖는 가에 대한 것이다.)
len(range())는 가능하다.
연속성을 가진 시퀀스 자료형이기 때문이다.
만약 min 이 max 보다 크다면 increase는 -로 둬야한다.
설정하지 않은 경우에 아무 것도 만들어지지 않는다.
음수 인덱스는 -1부터 시작(끝에서부터)
양수 인덱스는 0부터 시작(처음서부터)
tuple, list, range, 문자열등 모든 시퀀스 객체에 상요가능!
튜플 range 문자열은 저장된 요소를 변경 불가. read only임.
del 역시 tuple list range 문자열 셋다 안된다.
del도 슬라이스 사용 가능.
remove는 요소를 지정한 후 삭제하는 것임
a = [1, 2, 3, 4, 5, 6, 7]
del a[-4:]
a.remove(3)
시퀀스 객체[시작 인덱스, 끝 인덱스, 증가 폭] 인덱스 상의 range라고 시작하면 됨.
마찬가지로 끝 인덱스는 포함 x.
인덱스 값을 할당하지 않고 비워두면 알아서 각각 0과 최대값+1으로 설정됨.
증가 폭은 기본 1 range의 increase랑 같다고 생각하면 됌.
a + b 의 시퀀스 객체는 a안에 들어가는 것이 아닌 새롭게 new 시퀀스 객체를 만드는 것임. 그걸단지 a = a + b라고 해서 a안에 새롭게 만드는 것 뿐. a안에 문조ㅓㅓㄱㄴ 들어가는 것이 아니다.
a = {}의 형태
a = {'health' : 490, 'mana' : 350}
딕셔너리는 다른 것과 다르게 시퀀스 객체가 아님!
다른 것과 다르게 색인이 index 수가 아니라
key로 색인을 하고 value로 값을 나타냄.
value의 내용은 정수, 실수, 불, 자료형을 섞어서 사용해도 괜찮음.
but key에서는 리스트, 딕셔너리 등 자료형은 불가능. 튜플하고 문자열같은 read only는 가능.
a = {}
a = dict()
이때 key=value의 형식으로 만들어야함
또는 zip([k1, k2], [v1, v2])를 넣거나 해야함!