KR_BuiltIn - somaz94/python-study GitHub Wiki
νμ΄μ¬μ κΈ°λ³Έμ μΌλ‘ μ¬μ©ν μ μλ λ€μν λ΄μ₯ ν¨μλ₯Ό μ 곡νλ€.
# μν κ΄λ ¨
abs(-3) # μ λκ°: 3
round(3.7) # λ°μ¬λ¦Ό: 4
round(3.14159, 2) # μμμ 2μ리κΉμ§ λ°μ¬λ¦Ό: 3.14
max([1,2,3]) # μ΅λκ°: 3
min([1,2,3]) # μ΅μκ°: 1
sum([1,2,3]) # ν©κ³: 6
pow(2, 3) # κ±°λμ κ³±: 8
divmod(7, 3) # λͺ«κ³Ό λλ¨Έμ§: (2, 1)
# νλ³ν
int("3") # μ μλ‘ λ³ν: 3
int("FF", 16) # 16μ§μ λ¬Έμμ΄μ μ μλ‘: 255
float("3.14") # μ€μλ‘ λ³ν: 3.14
str(123) # λ¬Έμμ΄λ‘ λ³ν: "123"
list("abc") # 리μ€νΈλ‘ λ³ν: ['a','b','c']
tuple([1,2,3]) # ννλ‘ λ³ν: (1,2,3)
set([1,2,2,3]) # μ§ν©μΌλ‘ λ³ν: {1,2,3}
dict(a=1, b=2) # λμ
λλ¦¬λ‘ λ³ν: {'a':1, 'b':2}
β κΈ°λ³Έ ν¨μ νμ© ν:
-
round()
λ μνκ° λ°μ¬λ¦Ό(Banker's rounding) λ°©μμ μ¬μ©νλ€ - μ νν κ°μ΄λ° κ°(μ: 2.5)μ μ§μλ‘ λ°μ¬λ¦Όλλ€ -
max()
μmin()
μkey
λ§€κ°λ³μλ₯Ό μ¬μ©ν΄ λΉκ΅ κΈ°μ€μ μ§μ ν μ μλ€:max([1,-2,3], key=abs)
β 3 λμ -2 λ°ν - νλ³ν ν¨μλ μ μ ν μ
λ ₯μ΄ μλ κ²½μ°
ValueError
κ°μ μμΈλ₯Ό λ°μμν¨λ€ -
divmod()
λ νΉν ν° μμ λλμ μμ λͺ«κ³Ό λλ¨Έμ§λ₯Ό ν λ²μ ꡬν λ μ μ©νλ€
# κΈΈμ΄μ λ²μ
len([1,2,3]) # κΈΈμ΄: 3
range(5) # λ²μ: 0,1,2,3,4
range(1, 10, 2) # μμ, μ’
λ£, μ€ν
: 1,3,5,7,9
# λ°λ³΅ μ²λ¦¬
enumerate(['a','b']) # μΈλ±μ€-κ° μ: (0,'a'),(1,'b')
enumerate(['a','b'], 1) # μμ μΈλ±μ€ μ§μ : (1,'a'),(2,'b')
zip([1,2], [3,4]) # μμΌλ‘ λ¬ΆκΈ°: (1,3),(2,4)
zip(*[[1,3], [2,4]]) # μΈν¨νΉμΌλ‘ μ μΉ: (1,2),(3,4)
# λ°μ΄ν° μ²λ¦¬
list(filter(lambda x: x>0, [-1,0,1])) # νν°λ§: [1]
list(map(lambda x: x*2, [1,2,3])) # λ³ν: [2,4,6]
from functools import reduce
reduce(lambda x,y: x+y, [1,2,3]) # λμ μ°μ°: 6
# 컬λ μ
μμ±
all([True, True, False]) # λͺ¨λ μ°ΈμΈμ§: False
any([True, False, False]) # νλλΌλ μ°ΈμΈμ§: True
β μνμ€/λ°λ³΅ ν¨μ νμ© ν:
-
range()
λ λ©λͺ¨λ¦¬ ν¨μ¨μ μΈ μ΄ν°λ μ΄ν°λ₯Ό λ°ννλ€ - ν° λ²μλ μ μ λ©λͺ¨λ¦¬λ‘ μ²λ¦¬ -
enumerate()
λ μΈλ±μ€κ° νμν for 루νμμ λ§€μ° μ μ©νλ€:for i, val in enumerate(items):
-
zip()
μ μ¬λ¬ μνμ€λ₯Ό λ³λ ¬λ‘ μ²λ¦¬ν λ μ¬μ©νλ€ - κΈΈμ΄κ° λ€λ₯Έ κ²½μ° κ°μ₯ μ§§μ μνμ€μ λ§μΆ°μ§λ€ -
filter()
μmap()
μ μ§μ° νκ°(lazy evaluation) μ΄ν°λ μ΄ν°λ₯Ό λ°ννλ€ - νμν λλ§ κ³μ° -
all()
κ³Όany()
λ λΉ μνμ€μ λν΄ κ°κ°True
μFalse
λ₯Ό λ°ννλ€
# νμ
νμΈ
type(123) # νμ
νμΈ: <class 'int'>
isinstance(123, int) # νμ
κ²μ¬: True
isinstance(123, (int, float)) # μ¬λ¬ νμ
μ€ νλμΈμ§: True
issubclass(bool, int) # μμ κ΄κ³ νμΈ: True
# μμ±/λ©μλ νμΈ
dir([]) # κ°μ²΄μ μμ±/λ©μλ λͺ©λ‘
hasattr(obj, 'attr') # μμ± μ‘΄μ¬ μ¬λΆ
getattr(obj, 'attr') # μμ± κ° κ°μ Έμ€κΈ°
setattr(obj, 'attr', value) # μμ± κ° μ€μ
delattr(obj, 'attr') # μμ± μμ
# μμ± μ΄λ¦/κ°
vars(obj) # κ°μ²΄μ __dict__ λ°ν
globals() # μ μ μ¬λ³Ό ν
μ΄λΈ
locals() # μ§μ μ¬λ³Ό ν
μ΄λΈ
β νμ /μμ± ν¨μ νμ© ν:
-
isinstance()
λtype()
λΉκ΅λ³΄λ€ μμμ κ³ λ €νλ―λ‘ λ μμ νλ€ -
dir()
μ μΈμ μμ΄ νΈμΆνλ©΄ νμ¬ λ²μμ μ΄λ¦ λͺ©λ‘μ λ°ννλ€ -
getattr()
λ κΈ°λ³Έκ°μ μ§μ ν μ μλ€:getattr(obj, 'attr', default_value)
-
vars()
λ λ€μμ€νμ΄μ€ λμ λ리μ μ§μ μ κ·Όνλ―λ‘ λλ²κΉ μ μ μ©νλ€ -
globals()
μlocals()
λ λμ μ½λ μμ±μ΄λ λ΄λΆ κ²μ¬μ νμ©λλ€
# μ
μΆλ ₯
print("Hello") # μΆλ ₯
print("A", "B", sep=",") # ꡬλΆμ μ§μ : "A,B"
print("End", end="") # λλ¬Έμ μ§μ (μ€λ°κΏ λ°©μ§)
input("μ
λ ₯: ") # μ
λ ₯ λ°κΈ°
# νμΌ
open('file.txt', 'r') # νμΌ μ΄κΈ°
with open('file.txt', 'r') as f: # 컨ν
μ€νΈ κ΄λ¦¬μ μ¬μ©
data = f.read()
# μμ€ν
id(obj) # κ°μ²΄μ κ³ μ ID
hash(obj) # ν΄μκ°
help(print) # λμλ§ νμ
exit() # νλ‘κ·Έλ¨ μ’
λ£
__import__('math') # λμ λͺ¨λ μν¬νΈ
# λ©λͺ¨λ¦¬ κ΄λ¦¬
repr(obj) # κ°μ²΄μ λ¬Έμμ΄ νν
format(12.3, '.2f') # νμ μ§μ : "12.30"
β μ μΆλ ₯/μμ€ν ν¨μ νμ© ν:
-
print()
λ λ€μν μ΅μ (sep
,end
,file
)μΌλ‘ μΆλ ₯ νμμ μ§μ ν μ μλ€ - νμΌμ μ΄ λλ νμ
with
ꡬ문μ μ¬μ©νμ¬ μλμΌλ‘ λ«νλλ‘ νλ κ²μ΄ μ’λ€ -
hash()
λ λ³κ²½ λΆκ°λ₯ν(immutable) κ°μ²΄λ§ κ°λ₯νλ€ - λμ λ리 ν€λ‘ μ¬μ© κ°λ₯ μ¬λΆ νμΈ -
repr()
μeval(repr(obj)) == obj
κ° κ°λ₯ν λ¬Έμμ΄μ λ°ννλ κ²μ΄ μ΄μμ μ΄λ€ -
help()
λ λνν νκ²½μμ ν¨μλ λͺ¨λμ λ¬Έμλ₯Ό νμΈν λ μ μ©νλ€
# κ°μ²΄ λ³ν λ° κ²μ¬
ascii('νκΈ') # ASCIIλ‘ νν: '\ud55c\uae00'
ord('A') # λ¬Έμμ μ λμ½λ μ½λν¬μΈνΈ: 65
chr(65) # μ½λν¬μΈνΈμ ν΄λΉνλ λ¬Έμ: 'A'
callable(func) # νΈμΆ κ°λ₯ μ¬λΆ νμΈ: True/False
# ν΄λμ€ κ΄λ ¨
@classmethod # ν΄λμ€ λ©μλ λ°μ½λ μ΄ν°
@staticmethod # μ μ λ©μλ λ°μ½λ μ΄ν°
@property # μμ± λ°μ½λ μ΄ν°
super() # λΆλͺ¨ ν΄λμ€ μ°Έμ‘°
β κ°μ²΄/ν΄λμ€ ν¨μ νμ© ν:
-
ord()
μchr()
μ λ¬Έμμ μ½λν¬μΈνΈ κ° λ³νμ μ μ©νλ€ -
callable()
μ ν¨μμΈμ§ νμΈν λ보λ€__call__
λ©μλ ꡬν μ¬λΆλ₯Ό νμΈν λ λ μ μ©νλ€ - λ°μ½λ μ΄ν°λ λ©μλμ λμμ λ³κ²½νλ κ°λ ₯ν λꡬμ΄λ€
-
super()
λ λ©μλ μ€λ²λΌμ΄λ© μ λΆλͺ¨ ν΄λμ€μ ꡬνμ νΈμΆν λ μ¬μ©νλ€
# νκ°/μ€ν
eval("1 + 2") # λ¬Έμμ΄ μμ κ³μ°: 3
exec("x = 1") # λ¬Έμμ΄ μ½λ μ€ν
compile("x+y", "<string>", "eval") # μ½λ μ»΄νμΌ
# μ λ ¬
sorted([3,1,2]) # μ λ ¬: [1,2,3]
sorted([3,1,2], reverse=True) # μμ μ λ ¬: [3,2,1]
sorted([(1,'b'), (2,'a')], key=lambda x: x[1]) # ν€ κΈ°μ€: [(2,'a'), (1,'b')]
# μ§λ² λ³ν
bin(42) # 2μ§μ: '0b101010'
oct(42) # 8μ§μ: '0o52'
hex(42) # 16μ§μ: '0x2a'
int('0b101010', 2) # 2μ§μ λ¬Έμμ΄μμ μ μλ‘: 42
# 볡μμ
complex(1, 2) # 볡μμ μμ±: (1+2j)
abs(3+4j) # 볡μμ μ λκ°(ν¬κΈ°): 5.0
# μ΄ν°λ μ΄ν°
iter([1, 2, 3]) # μ΄ν°λ μ΄ν° μμ±
next(iterator) # λ€μ νλͺ© κ°μ Έμ€κΈ°
β κΈ°ν ν¨μ νμ© ν:
-
eval()
κ³Όexec()
λ μ¬μ©μ μ λ ₯μΌλ‘λΆν° μ§μ μ€νν κ²½μ° λ³΄μ μνμ΄ μλ€ -
sorted()
λ μλ³Έμ λ³κ²½νμ§ μκ³ μ 리μ€νΈλ₯Ό λ°ννλ€ (λ°λ©΄list.sort()
λ μλ³Έ λ³κ²½) - μ§λ² λ³ν ν¨μλ μ λμ΄(
0b
,0o
,0x
)κ° ν¬ν¨λ λ¬Έμμ΄μ λ°ννλ€ -
iter()
λ callableκ³Ό μΌν°λ κ°μ λ°μ μλ μλ€:iter(callable, sentinel)
-
next()
λ κΈ°λ³Έκ°μ μ 곡ν μ μλ€:next(iterator, default)
# μ¬λΌμ΄μ±κ³Ό μΈλ±μ±
slice(1, 10, 2) # μ¬λΌμ΄μ€ κ°μ²΄ μμ±
array[slice(1, 10, 2)] # [1:10:2]μ λμΌ
# λΉκ΅ ν¨μ
cmp_to_key(func) # λΉκ΅ ν¨μλ₯Ό ν€ ν¨μλ‘ λ³ν
sorted([3,1,2], key=cmp_to_key(lambda a, b: a - b))
# ν¨μν νλ‘κ·Έλλ°
from functools import partial
add5 = partial(lambda x, y: x + y, 5) # λΆλΆ μ μ©: add5(3) == 8
# λ©λͺ¨λ¦¬ λ·°
memoryview(bytes(10)) # λ©λͺ¨λ¦¬ ν¨μ¨μ μΈ λ°μ΄νΈ μ‘°μ
# κ°μ²΄ ν¬κΈ°
import sys
sys.getsizeof([1, 2, 3]) # κ°μ²΄ λ©λͺ¨λ¦¬ μ¬μ©λ (λ°μ΄νΈ)
# μ±λ₯ μΈ‘μ
from timeit import timeit
timeit("'-'.join(str(n) for n in range(100))", number=10000)
# λ°μ΄ν° μ²λ¦¬ νμ΄νλΌμΈ
data = [1, -2, 3, -4, 5]
result = sum(map(abs, filter(lambda x: x % 2 == 1, data)))
print(result) # νμ κ°λ€μ μ λκ° ν©: 9
# μ¬μ μ ν€-κ° κ΅μ²΄
inverted_dict = dict(map(reversed, original_dict.items()))
# μ€μ²© 리μ€νΈ ννν
nested = [[1, 2], [3, 4]]
flattened = list(sum(nested, [])) # [1, 2, 3, 4]
# λ ν¨μ¨μ μΈ λ°©λ² (itertools μ¬μ©)
from itertools import chain
flattened = list(chain.from_iterable(nested))
β κ³ κΈ νμ© ν:
- λ΄μ₯ ν¨μλ₯Ό μ‘°ν©νλ©΄ κ°κ²°νκ³ ν¨μ¨μ μΈ μ½λλ₯Ό μμ±ν μ μλ€
- νμ§λ§ λ무 λ§μ μ‘°ν©μ κ°λ μ±μ ν΄μΉ μ μμΌλ―λ‘ μ μ ν κ· νμ΄ νμνλ€
- λ©λͺ¨λ¦¬λ μ±λ₯ μ΅μ νκ° νμν κ²½μ°
memoryview
λitertools
λͺ¨λμ κ³ λ €νλ€ - νΉμ λͺ©μ μ μ΅μ νλ νμ΄μ¬ λ΄μ₯ ν¨μλ§μΌλ‘λ νκ³κ° μμ΄ NumPy κ°μ μΈλΆ λΌμ΄λΈλ¬λ¦¬κ° μ μ©ν μ μλ€
# Python 3.8+
breakpoint() # λλ²κ±° μ§μ
μ
# Python 3.7+
from time import time_ns
time_ns() # λλ
Έμ΄ λ¨μ μκ° μΈ‘μ
# Python 3.5+
from math import isclose
isclose(1.0, 1.0001, rel_tol=1e-3) # λΆλμμμ κ·Όμ¬ λΉκ΅: True
β λ²μ λ³ ν¨μ νμ© ν:
- μ΅μ νμ΄μ¬ λ²μ μ λ΄μ₯ ν¨μλ₯Ό νμ©νλ©΄ μ½λκ° λ κ°κ²°ν΄μ§ μ μλ€
- νμ§λ§ μ½λμ νΈνμ±μ΄ μ€μνλ€λ©΄ νΉμ λ²μ μλ§ μλ ν¨μ μ¬μ©μ μ£Όμν΄μΌ νλ€
- μ΄μ λ²μ μ§μμ΄ νμνλ©΄ ν΄λ°±(fallback) ꡬνμ κ³ λ €νλ€
# ν° νμΌ ν¨μ¨μ μΌλ‘ μ½κΈ°
with open('large_file.txt', 'r') as f:
# ν λ²μ λͺ¨λ μ½λ λμ λΌμΈ λ¨μλ‘ μ²λ¦¬
for line in f:
process(line.strip())
# λμ©λ 리μ€νΈ μμ± μ 리μ€νΈ μ»΄ν리ν¨μ
νμ©
squares = [x**2 for x in range(1000)] # map() ν¨μλ³΄λ€ λΉ λ₯Ό μ μμ
# λμ
λ리 μ»΄ν리ν¨μ
word_lengths = {word: len(word) for word in words}
# λΆνμν μ 체 리μ€νΈ μμ± λ°©μ§
def process_large_data():
data = get_data_source() # μ΄ν°λ μ΄ν° λ°ν
filtered = filter(is_valid, data)
transformed = map(transform, filtered)
# νμν λΆλΆλ§ κ³μ°(μ²μ 10κ°λ§)
for i, item in enumerate(transformed):
if i >= 10:
break
process_item(item)
β μ±λ₯ μ΅μ ν ν:
- λ΄μ₯ ν¨μλ Cλ‘ κ΅¬νλμ΄ μμ΄ μΌλ°μ μΌλ‘ μμ νμ΄μ¬ ꡬνλ³΄λ€ λΉ λ₯΄λ€
-
map()
κ³Όfilter()
λ μ§μ° νκ°λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬ ν¨μ¨μ±μ μ 곡νλ€ - ν° λ°μ΄ν°μ μ μ²λ¦¬ν λλ μ λλ μ΄ν° ννμμ΄λ μ΄ν°λ μ΄ν°λ₯Ό νμ©νλ€
- ν«μ€ν(μ±λ₯ λ³λͺ©)μ΄ μλ μ½λλ νλ‘νμΌλ§ ν μ΅μ ννλ€
- μ λ§ μ±λ₯μ΄ μ€μν λΆλΆμ NumPy, Pandas κ°μ μ΅μ νλ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ³ λ €νλ€
class CustomCollection:
def __init__(self, items):
self.items = items
def __len__(self):
return len(self.items)
def __iter__(self):
return iter(self.items)
def __contains__(self, item):
return item in self.items
def __bool__(self):
return bool(self.items)
def __getitem__(self, idx):
return self.items[idx]
# λ΄μ₯ ν¨μμ μ°λ
collection = CustomCollection([1, 2, 3])
print(len(collection)) # 3
print(2 in collection) # True
print(bool(collection)) # True
print(list(collection)) # [1, 2, 3]
β 컀μ€ν κ°μ²΄ ν΅ν© ν:
- μμ λ§μ κ°μ²΄λ₯Ό λ§λ€ λ μ μ ν λ§€μ§ λ©μλλ₯Ό ꡬννλ©΄ λ΄μ₯ ν¨μμ μμ°μ€λ½κ² λμνλ€
-
__len__
,__iter__
,__contains__
λ±μ μνμ€λ 컬λ μ λμμ μ€μνλ€ -
__bool__
μ ꡬννλ©΄if obj:
κ°μ λΆλ¦¬μΈ 컨ν μ€νΈμμ λμμ μ μ΄ν μ μλ€ -
__getitem__
μ ꡬννλ©΄ μΈλ±μ±κ³Ό μ¬λΌμ΄μ±μ μ§μν μ μλ€
β λ΄μ₯ ν¨μ μ¬μ© μ μ£Όμμ¬ν:
- νλ³ν μ μμΈ μ²λ¦¬ νμ: μλͺ»λ μ
λ ₯μ λν
ValueError
λ± μ²λ¦¬ - map/filterλ iterator λ°ν: νμμ
list()
λ±μΌλ‘ ꡬ체ν νμ - eval/exec μ¬μ© μ 보μ μ£Όμ: μ λ’°ν μ μλ μ λ ₯μ μ μ©νλ©΄ 보μ μν
- open ν close νμ:
with
ꡬ문μΌλ‘ μλ κ΄λ¦¬ κΆμ₯ - dir()λ‘ μ¬μ© κ°λ₯ν λ©μλ νμΈ: κ°μ²΄μ κ°λ₯ν μ°μ° νμμ μ μ©
- λ΄μ₯ ν¨μ μ€λ²λΌμ΄λ© μ£Όμ: λ³μλͺ
μΌλ‘
sum
,max
λ± μ¬μ© μ μλ³Έ ν¨μ μ κ·Ό λΆκ° - νμ΄μ¬ λ²μ νΈνμ± κ³ λ €: λ²μ μ λ°λΌ μ¬μ© κ°λ₯ν ν¨μ λ¬λΌμ§
- μ±λ₯ μ΅μ νλ μΈ‘μ ν μ§ν: μ€μ λ³λͺ© μ§μ νμ ν μ΅μ ν