변수 선언?
- RAM에 저장공간을 만들어 데이터를 저장하는 문법
식별자 ( 변수 )
- 저장공간을 구별해주는 문자열
규칙
1. 문법 : 틀리면 에러가 발생되어 다음 코드가 실행되지 않는다.
대소문자, 숫자, _사용 가능하다.
대소문자를 구분한다.
가장 앞에 숫자가 올 수 없다. - 1_data1(X)
명령어(예약어)를 사용하면 안된다. - def, if, for (X)
2. 컨벤션: 틀려도 코드가 실행이 된다. 단지 보기에 안좋아 지켜주는 규칙이라고 생각하면 된다. ( PEP8)
변수 : data_one (snake case 표기법을 따른다)
상수 : 대문자로 작성한다. DATA_ONE
# 식별자 1개, 데이터 1개
data1 = 1
# 식별자 n개, 데이터 n개
data2 , data3 = 2, 3
# 식별자 n개, 데이터 1개
data4 = data5 = 4
데이터 타입
- RAM을 효율적으로 사용하는 문법
1. 기본 데이터 타입
- int, float, bool, str
int : 정수형 데이터
float : 소수형 데이터
bool : True, False 로 구분되는 데이터
str: 문자형 데이터
파이썬은 인터프리터 언어이기 때문에 변수 선언 시 데이터 타입을 지정하지 않아도 자동으로 데이터 타입을 지정한다.
이것을 동적타이핑이라고 한다.
type() : 식별자의 데이터 타입을 출력한다
data1, data2, data3, data4 = 1, -5.2, True, 'python'
type(data1), type(data2), type(data3), type(data4)
>> (int, float, bool, str)
2. 컬렉션 데이터 타입 : 식별자 1개, 데이터 n개
- list, tupe, dict, set
list : [] : 순서가 있고, 수정이 가능하다
data1 = [1, 2, 3, 'A', 'B']
tuple : () : 순서가 있고, 수정이 불가능하다
data2 = (2, 3, 4, 'A', 'B')
list가 아닌 tuple을 사용하는 이유?
1. tuple은 데이터 수정이 불가하다 .
하지만 위의 이유만으로는 부족하다 왜냐하면 list를 사용하여 데이터를 수정 안해도 되는거 아닌가?
2. 같은 데이터를 가지고 있을 때 tuple 이 list보다 저장공간을 적게 사용한다
import sys
d1 = [1, 2, 3]
d2 = (1, 2, 3)
# 저장공간을 알아 보기 위함
sys.getsizeof(d1), sys.getsizeof(d2)
>> (80, 64)
tuple 데이터 타입은 여러개의 식별자로 받을 수 있다.
data = 1, 2 # 괄호 생략 가능
d1, d2 = data
print(d1, d2)
>> 1 2
dict : {} : 순서가 없고, 수정이 가능하다. 순서값으로 인덱스 대신 키값을 사용한다.
data3 = { 1 : 'one' , 2 : 'two'}
set : set() : 집합 데이터를 표현한다. 중복 데이터를 허용하지 않는다
data4 = set([1, 2, 3, 2])
>> (1, 2, 3)
# 교집합 , 합집합, 차집합
d1 = set([1, 2, 3])
d2 = set([2, 3, 4])
print(d1 & d2, d1 | d2, d1 - d2)
>> {2, 3} {1, 2, 3, 4} {1}
데이터 선택
data[] : [idx], [key], [start:end], [start:end:stride]
* start에 데이터가 없으면 가장 앞을 의미하고, end에 데이터가 없으면 가장 뒤를 의미한다
* 음수 사용가능
data1[3], data1[2:4], data1[:2], data1[3:], data1[:], data1[::2]
>> ('A', [3, 'A'], [1, 2], ['A', 'B'], [1, 2, 3, 'A', 'B'], [1, 3, 'B'])
data1[-2], data1[-2:], data1[::-1]
>> ('A', ['A', 'B'], ['B', 'A', 3, 2, 1])
데이터 수정
데이터 선택 = 수정할 데이터
* tuple 은 불가!
print(data1)
data1[3] = 'C'
print(data1)
>> [1, 2, 3, 'A', 'B']
[1, 2, 3, 'C', 'B']
데이터 삭제
del 데이터선택
del data3[2]
>> {'one': 10}
del data1[2:4]
>> [1, 2, 'B']
변수 선언시 주의 할것!
* 얕은 복사, 깊은 복사
data1 = [1, 2, 3]
data2 = data1 # 얕은복사 : 주소값 복사
data3 = data1.copy() # 깊은복사 : 데이터 복사
data1[1] = 4
그림으로 이해하면 아래와 같다.
변수의 데이터를 문자열에 삽입하는 방법
1. +를 이용하여 이어붙이기 ( data의 타입이 str일때만 가능하다)
data1, data2 = '5', '2'
string = '나는 ' + data1 + '개중에' + data2 + '개를 먹었다'
2. format 이용하기
data1, data2 = 5, 2
string = '나는 {}개중에 {}개를 먹었다'
3. f 이용하기
string = f'나는 {data1}개중에 {data2}개를 먹었다'
'Python' 카테고리의 다른 글
[Python] 기초 문법 - 함수 (0) | 2023.01.04 |
---|---|
[Python] 기초 문법 - 연산자, 조건문, 반복문 (0) | 2023.01.03 |
[Python] 다양한 모듈 사용해보기2 : json, googletrans, smtplib (day 3) (0) | 2022.12.23 |
[Python] 다양한 모듈 사용해보기1 : requests, BeautifulSoup, datetime (day 3) (0) | 2022.12.23 |
[Python] 조건문, 반복문 : if, while, for (day 1-2) (0) | 2022.12.23 |