목차
1. 변수
2. 자료형
3. 연산자
4. 파일
5. 객체지향 프로그래밍
[1] 변수(Variables)
-변수는 데이터를 저장하기 위해 사용하는 공간
-변수는 값을 저장, 재사용, 조작할 수 있음
-변수 선언시 자료형을 명시하지 않아도 값을 기반으로 자료형을 자동으로 추론함(=Dynamic typing)
# 동적 타이핑의 예시
x = 42 # x는 정수(int)
x = "hello" # x는 이제 문자열(str)
-변수의 타입을 자동으로 변환하지 않으며, 타입 간의 불일치가 있을 경우 명시적으로 반환을 요구함(=Strong typing)
# 강력한 타이핑의 예시
x = 42
y = "hello"
print(x + y) # TypeError 발생: int와 str를 더할 수 없음
print(str(x) + y) # "42hello" <- 명시적 변환으로 타입 불일치를 해결해야 함
※ Dynamic typing은 변수가 어떤 타입이든 될 수 있다는 "자유도"를 제공함
※ Strong typing은 그 자유도 내에서 "안전성"을 보장함
-가변성(Mutable), 불변성(Immutable)
--가변성 : 객체의 값을 변경할 수 있는 특성 (예: list, dictionary, set 등...)
--불변성 : 객체의 값을 변경할 수 없는 특성 (예: 정수, 실수, 문자열, 튜플 등...)
# 가변 객체는 메모리 주소가 유지되며, 같은 객체를 참조한 모든 변수에서 수정된 결과를 공유함
a = [1, 2, 3]
b = a # b는 a와 같은 객체를 참조
b.append(4) # b를 수정하면 a도 영향을 받음
print(a) # [1, 2, 3, 4]
# 불변 객체는 값을 변경하면 기존 객체를 수정하는 대신 새로운 객체를 생성함
a = 10
b = a # b는 a와 같은 객체를 참조
b = b + 1 # b는 새로운 객체를 참조
print(a) # 10 (a는 영향을 받지 않음)
-지역변수(Local Variable), 전역변수(Global Variable)
--지역변수 : 함수 내부에서 선언된 변수로 선언된 함수 내에서만 접근 가능
--전역변수 : 함수 외부에서 선언된 변수로 프로그램 전체에서 접근 가능
# 전역변수 선언
global_var = "전역변수"
def function1():
# 지역변수 선언
local_var = "지역변수"
print(global_var) # 전역변수 접근 가능
print(local_var) # 지역변수 접근 가능
def function2():
print(global_var) # 전역변수 접근 가능
# print(local_var) # Error! function1의 지역변수는 여기서 접근 불가
# 전역변수를 함수 내에서 수정하고 싶을 때
def function3():
global global_var # global 키워드로 전역변수 수정 권한 획득
global_var = "전역변수가 수정되었습니다"
# 중첩 함수에서의 변수 스코프
def outer_function():
outer_var = "외부함수 변수"
def inner_function():
inner_var = "내부함수 변수"
print(outer_var) # 외부함수 변수 접근 가능
print(inner_var) # 내부함수 변수 접근 가능
inner_function()
print(outer_var) # 외부함수 변수 접근 가능
# print(inner_var) # Error! 내부함수의 변수는 접근 불가
[2] 자료형(Data type)
구분 | 데이터 타입 | 설명 | |
숫자형 | 정수형(int) | 소수점이 없는 숫자 | |
실수형(float) | 소수점을 포함하는 숫자 | ||
복소수형(complext) | 실수부와 허수부로 구성된 숫자 | ||
논리형 | 불리언(bool) | 참(True) 또는 거짓(False)을 나타내는 데이터 타입 | |
시퀀스형 | 문자열(str) | 문자나 단어의 시퀀스 | |
리스트(list) | 순서가 있는 가변 시퀀스 타입 ⇐ JavaScript의 배열(array) | ||
튜플(tuple) | 순서가 있는 불변 시퀀스 타입 | ||
범위(range) | 특정 범위 내의 숫자를 생성 | ||
매핑형 | 딕셔너리(dict) | 키-값 쌍으로 구성된 매핑 타입 ⇐ JavaScript의 객체(object) | |
집합형 | 집합(set) | 중복을 허용하지 않는 순서가 없는 컬렉션 타입 | |
프로즌셋(frozenset) | 집합과 유사하지만 불변 집합 | ||
NoneType | 아무 것도 없음을 나타내는 특수한 데이터 타입 |
※ 앞서 JS를 배웠으므로 JS에서는 없었던 특별한 자료형만 자세히 알아보자
-튜플(tuple)
- 불변성(Immutable): 생성된 후 값을 변경할 수 없음
- 순서 유지(Order): 요소들이 입력된 순서를 유지함
- 중복 허용: 동일한 값을 여러 번 포함할 수 있음
- 소괄호 ()로 정의하며, 쉼표로 구분
# 튜플 정의
my_tuple = (1, 2, 3)
print(my_tuple) # (1, 2, 3)
# 요소 접근
print(my_tuple[0]) # 1
# 튜플 언패킹
x, y, z = my_tuple
print(x, y, z) # 1 2 3
# 단일 요소 튜플
single = (5,) # 요소가 하나인 튜플을 만들 때는 반드시 쉼표를 붙여야 함
print(type(single)) # <class 'tuple'>
# 불변성 확인
my_tuple[0] = 10 # TypeError: 튜플은 값을 변경할 수 없음
-레인지(range)
- 숫자의 연속된 시퀀스를 생성하는 객체
- 메모리 효율성이 높음: 실제 리스트를 생성하지 않고 필요할 때 계산
- 순서 유지(Order): 요소가 정해진 순서대로 생성됨
- 읽기 전용이며, 요소를 수정할 수 없음
- 반복문에서 숫자를 생성하는데 유용함
# range 정의
r = range(5) # 0부터 4까지 생성
print(list(r)) # [0, 1, 2, 3, 4]
# 시작과 끝, 간격 지정
r = range(1, 10, 2) # 1부터 10까지 2씩 증가
print(list(r)) # [1, 3, 5, 7, 9]
# 반복문 활용
for i in range(3):
print(i) # 0, 1, 2
-딕셔너리(dict)
- 키-값 쌍(Key-Value Pair)으로 구성된 자료형
- 가변성(Mutable): 키-값을 추가, 삭제, 수정 가능
- 키는 고유해야 하며, 불변 객체(예: 문자열, 숫자, 튜플 등)만 사용 가능
- 중괄호 {}로 정의함
- 데이터를 키를 활용해 빠르게 검색할 때 사용하고, JSON과 같은 데이터 구조 표현에 유용함
# 딕셔너리 정의
my_dict = {"name": "Alice", "age": 25}
# 값 접근
print(my_dict["name"]) # Alice
# 값 추가 및 수정
my_dict["age"] = 26
my_dict["city"] = "Seoul"
print(my_dict) # {'name': 'Alice', 'age': 26, 'city': 'Seoul'}
# 값 삭제
del my_dict["city"]
print(my_dict) # {'name': 'Alice', 'age': 26}
# 키 확인
print("name" in my_dict) # True
print("city" in my_dict) # False
# 반복문
for key, value in my_dict.items():
print(key, value)
-집합(set)
- 순서가 없는(정렬되지 않은) 고유 값들의 집합
- 중복 허용하지 않음
- 가변성(Mutable): 요소 추가, 삭제 가능
- 중괄호 {}로 정의하며, 빈 집합은 set()으로 생성함
- 중복을 제거하거나 집합 연산(교집합, 합집합, 차집합 등)에 유용함
# 집합 정의
my_set = {1, 2, 3, 3}
print(my_set) # {1, 2, 3} (중복 제거)
# 요소 추가 및 삭제
my_set.add(4)
my_set.remove(2)
print(my_set) # {1, 3, 4}
# 집합 연산
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2) # 합집합: {1, 2, 3, 4, 5}
print(set1 & set2) # 교집합: {3}
print(set1 - set2) # 차집합: {1, 2}
# 중복 제거
nums = [1, 2, 2, 3, 4, 4]
unique_nums = set(nums)
print(unique_nums) # {1, 2, 3, 4}
'(SK쉴더스)AI 활용한 클라우드 & 보안 전문가 양성 캠프' 카테고리의 다른 글
[새싹 성동 2기] 5. Python 문법 기초(2) (1) | 2024.12.09 |
---|---|
[새싹 성동 2기] 두 번째 모듈 프로젝트 내용 및 후기 (0) | 2024.12.06 |
[새싹 성동 2기] 4-3. 리액트 라우터 (1) | 2024.11.20 |
[새싹 성동 2기] 4-2. 리액트 컴포넌트(3) (1) | 2024.11.19 |
[새싹 성동 2기] 4-2. 리액트 컴포넌트(2) (0) | 2024.11.18 |