KR_DataType - somaz94/python-study GitHub Wiki
νμ΄μ¬μ κΈ°λ³Έ λ°μ΄ν° νμ λ€μ μ΄ν΄λ³΄κ² λ€.
# μ«μν(Numeric)
x = 10 # μ μ(int)
pi = 3.14 # μ€μ(float)
z = 3 + 4j # 볡μμ(complex)
# λ¬Έμμ΄(String)
name = "Python" # ν°λ°μ΄ν
desc = 'Language' # μμλ°μ΄ν
text = """μ¬λ¬ μ€μ # μ¬λ¬ μ€ λ¬Έμμ΄
λ¬Έμμ΄μ μμ±ν μ
μμ΅λλ€."""
# λΆλ¦¬μΈ(Boolean)
is_valid = True
is_active = False
# None νμ
empty_value = None # κ°μ΄ μμμ νν
β νΉμ§:
- μ«μν: μ μ, μ€μ, 볡μμ μ§μ
- λ¬Έμμ΄: μμλ°μ΄ν, ν°λ°μ΄ν, μΌμ€λ°μ΄ν μ¬μ© κ°λ₯
- λΆλ¦¬μΈ: True, False κ°λ§ κ°μ§
- None: κ°μ΄ μμμ λνλ΄λ νΉμ νμ
# 리μ€νΈ(List) - μμκ° μκ³ , λ³κ²½ κ°λ₯ν 컬λ μ
fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14]
# νν(Tuple) - μμκ° μκ³ , λ³κ²½ λΆκ°λ₯ν 컬λ μ
coordinates = (10, 20)
person = ("John", 25, "New York")
single_item = (42,) # λ¨μΌ μμ΄ν
ννμ μ½€λ§ νμ
# λμ
λ리(Dictionary) - ν€-κ° μμ 컬λ μ
user = {"name": "John", "age": 30, "city": "New York"}
scores = {1: "Gold", 2: "Silver", 3: "Bronze"}
# μ§ν©(Set) - μ€λ³΅μ΄ μλ 컬λ μ
unique_numbers = {1, 2, 3, 4, 5}
unique_chars = set("hello") # {'h', 'e', 'l', 'o'}
# λΆλ³ μ§ν©(Frozenset) - λ³κ²½ λΆκ°λ₯ν μ§ν©
immutable_set = frozenset([1, 2, 3, 4, 5])
β 컬λ μ νΉμ§:
- 리μ€νΈ: λ€μν νμ μ μ₯ κ°λ₯, μΈλ±μ±κ³Ό μ¬λΌμ΄μ± μ§μ, κ°λ³μ
- νν: 리μ€νΈμ μ μ¬νμ§λ§ μμ± ν λ³κ²½ λΆκ°λ₯, λΆλ³μ± 보μ₯
- λμ λ리: ν€-κ° μμΌλ‘ λ°μ΄ν° μ μ₯, ν€λ‘ κ° μ κ·Ό, ν΄μ κΈ°λ° κ²μ
- μ§ν©: μ€λ³΅ μμλ₯Ό μλμΌλ‘ μ κ±°, μνμ μ§ν© μ°μ° μ§μ
- λΆλ³ μ§ν©: μ§ν©κ³Ό λμΌνμ§λ§ μμ± ν λ³κ²½ λΆκ°λ₯
# λ¬Έμμ΄ -> μ«μ
num_str = "123"
num_int = int(num_str) # 123
num_float = float("3.14") # 3.14
# μ«μ -> λ¬Έμμ΄
str_num = str(123) # "123"
# λΆλ¦¬μΈ λ³ν
bool(1) # True
bool("") # False
bool([]) # False
bool(0) # False
# 컬λ μ
κ° λ³ν
list((1, 2, 3)) # [1, 2, 3]
tuple([1, 2, 3]) # (1, 2, 3)
set([1, 2, 2, 3, 3]) # {1, 2, 3}
dict([("a", 1), ("b", 2)]) # {"a": 1, "b": 2}
β λ³ν κ·μΉ:
- λ¬Έμμ΄μ μ μ ν νμμ΄μ΄μΌ λ³ν κ°λ₯
- μ«μλ λͺ¨λ νμ μΌλ‘ λ³ν κ°λ₯
- λΉμ΄μλ κ°μ²΄λ 0μ Falseλ‘ λ³ν
- 컬λ μ νμ κ° λ³νμ μΌλ°μ μΌλ‘ κ°λ₯νλ νΈνμ± μ£Όμ νμ
# type() ν¨μ μ¬μ©
type(123) # <class 'int'>
type("text") # <class 'str'>
type(3.14) # <class 'float'>
# isinstance() ν¨μ μ¬μ©
x = 100
isinstance(x, int) # True
isinstance(x, str) # False
# λ€μ€ νμ
νμΈ
isinstance(x, (int, float)) # True (xκ° intλ float μ€ νλμΈμ§)
# ν΄λμ€ κ³μΈ΅ νμΈ
issubclass(bool, int) # True (boolμ intμ νμ ν΄λμ€)
β νμΈ λ°©λ²:
- type(): κ°μ²΄μ μ νν νμ μ λ°ν
- isinstance(): κ°μ²΄κ° νΉμ νμ (λλ νμ λ€)μΈμ§ νμΈ
- issubclass(): ν΄λμ€ κ° μμ κ΄κ³ νμΈ
# λΆλ³(immutable) νμ
str_value = "hello"
num_value = 42
tuple_value = (1, 2, 3)
frozenset_value = frozenset([1, 2, 3])
# κ°λ³(mutable) νμ
list_value = [1, 2, 3]
dict_value = {"key": "value"}
set_value = {1, 2, 3}
β μ£Όμ νΉμ§:
- λμ νμ΄ν μ§μ (νμ μλ κ²°μ )
- λͺ¨λ κ²μ΄ κ°μ²΄
- λΆλ³ νμ : μ«μ, λ¬Έμμ΄, νν, frozenset
- κ°λ³ νμ : 리μ€νΈ, λμ λ리, μ
# λ°μ΄νΈ(λΆλ³)
b = b'hello' # λ°μ΄νΈ 리ν°λ΄
b2 = bytes([104, 101, 108, 108, 111]) # ASCII κ°μΌλ‘ μμ±
print(b) # b'hello'
# λ°μ΄νΈ λ°°μ΄(κ°λ³)
ba = bytearray(b'hello')
ba[0] = 72 # 첫 λ°μ΄νΈ λ³κ²½ (ASCII 'H')
print(ba) # bytearray(b'Hello')
# μΈμ½λ©/λμ½λ©
text = "μλ
νμΈμ"
encoded = text.encode('utf-8') # λ¬Έμμ΄ -> λ°μ΄νΈ
decoded = encoded.decode('utf-8') # λ°μ΄νΈ -> λ¬Έμμ΄
β λ°μ΄νΈ νΉμ§:
- λ°μ΄νΈ: 0-255 μ¬μ΄μ μ μλ₯Ό ν¬ν¨νλ λΆλ³ μνμ€
- λ°μ΄νΈ λ°°μ΄: λ°μ΄νΈμ μ μ¬νμ§λ§ κ°λ³μ
- λ°μ΄λ리 λ°μ΄ν° μ²λ¦¬λ λ€νΈμν¬ ν΅μ μ μ¬μ©
- λ¬Έμμ΄κ³Ό λ³ν μ μΈμ½λ©/λμ½λ© νμ
# μ΄κ±°ν(Enum)
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED) # Color.RED
print(Color.RED.name) # 'RED'
print(Color.RED.value) # 1
# λ€μλ νν(NamedTuple)
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, 22)
print(p.x, p.y) # 11 22
print(p[0], p[1]) # 11 22
# λ°μ΄ν° ν΄λμ€(Python 3.7+)
from dataclasses import dataclass
@dataclass
class Person:
name: str
age: int
city: str = "Unknown"
person = Person("John", 30)
print(person) # Person(name='John', age=30, city='Unknown')
β νΉμ νμ νΉμ§:
- μ΄κ±°ν: μμ μ§ν©μ μ μν λ μ μ©
- λ€μλ νν: νλλͺ μΌλ‘ μ κ·Ό κ°λ₯ν νν
- λ°μ΄ν° ν΄λμ€: λ°μ΄ν° μ€μ¬ ν΄λμ€ μ μλ₯Ό κ°μν
# κΈ°λ³Έ νμ
ννΈ (Python 3.5+)
def greeting(name: str) -> str:
return f"Hello, {name}"
# λ³΅ν© νμ
ννΈ
from typing import List, Dict, Tuple, Optional, Union, Any
# 리μ€νΈ νμ
def process_items(items: List[int]) -> List[str]:
return [str(item) for item in items]
# λμ
λ리 νμ
def get_user_data(user_id: int) -> Dict[str, Any]:
return {"name": "John", "age": 30}
# μ΅μ
λ νμ
def find_user(name: str) -> Optional[Dict[str, Any]]:
if name == "John":
return {"name": "John", "age": 30}
return None
# μ λμ¨ νμ
def process_input(data: Union[str, int, float]) -> str:
return str(data)
β νμ ννΈ νΉμ§:
- μ½λ κ°λ μ± ν₯μ λ° λ¬Έμν ν¨κ³Ό
- μ μ νμ κ²μ¬ λꡬ(mypy λ±)μ ν¨κ» μ¬μ© κ°λ₯
- λ°νμμλ μν₯μ μ£Όμ§ μμ(μ£Όμμ μν )
- 볡μ‘ν νμ λ νν κ°λ₯
# ν΄λμ€ μ μλ₯Ό ν΅ν μ¬μ©μ μ μ νμ
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
return f"Hello, my name is {self.name}"
# μΈμ€ν΄μ€ μμ±
person = Person("John", 30)
print(type(person)) # <class '__main__.Person'>
print(person.greet()) # "Hello, my name is John"
# νμ
체ν¬
print(isinstance(person, Person)) # True
β μ¬μ©μ μ μ νμ :
- ν΄λμ€λ₯Ό ν΅ν΄ μλ‘μ΄ νμ μ μ κ°λ₯
- λ°μ΄ν°μ λ©μλλ₯Ό μΊ‘μν
- μμμ ν΅ν νμ κ³μΈ΅ ꡬ쑰 μμ± κ°λ₯
- νμ μ²΄ν¬ λ° μΈμ€ν΄μ€ νμΈ κ°λ₯