๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ Python16

์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 6์žฅ - ๋ฉ”ํƒ€ํด๋ž˜์Šค์™€ ์• ํŠธ๋ฆฌ๋ทฐํŠธ Better way 44 ์„ธํ„ฐ์™€ ๊ฒŒํ„ฐ ๋ฉ”์„œ๋“œ ๋Œ€์‹  ํ‰๋ฒ”ํ•œ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ setter, getter ๋ฉ”์„œ๋“œ ํ™œ์šฉ์ด ์•„๋‹Œ ์• ํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ ์ง์ ‘ ํ™œ์šฉํ•˜์ž# ์•ˆ ์ข‹์€ ์˜ˆ์‹œ - getter, setter ํ™œ์šฉclass Person: def __init__(self): self._name = '' def get_name(self): return self._name def set_name(self, value): self._name = valuep = Person()p.set_name('Sungchan')print(p.get_name()) # ์ข‹์€ ์˜ˆ์‹œ - ์• ํŠธ๋ฆฌ๋ทฐํŠธ ํ™œ์šฉclass Person: def __init__(self): self.n.. 2025. 3. 30.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 5์žฅ - ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค Better way 38 ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค ๋Œ€์‹  ํ•จ์ˆ˜๋ฅผ ๋ฐ›์•„๋ผํ›…(hook)Python ๋‚ด์žฅ API ์‚ฌ์šฉํ•  ๋•Œ, ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐPython์€ ํ•จ์ˆ˜๋ฅผ ์ผ๊ธ‰ ์‹œ๋ฏผ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ์— ๊ฐ€๋Šฅ ์ผ๊ธ‰ ์‹œ๋ฏผ (first-class citizen)์•„๋ฌด๋Ÿฐ ์ œ์•ฝ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’ํ•จ์ˆ˜ ์ธ์ž๋กœ ๋„˜๊ธฐ๊ธฐ ๊ฐ€๋Šฅํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ์ €์žฅ ๊ฐ€๋Šฅ languages = ['python', 'swift', 'java']languages.sort(key=len) # hookprint(languages)>>>['java', 'swift', 'python']  ๋”•์…”๋„ˆ๋ฆฌ์— ํ‚ค๊ฐ€ ์ถ”๊ฐ€ ์—ฌ๋ถ€๋ฅผ ์ถ”์ ํ•˜๋Š” ๋‚ด์šฉ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ํ•˜์ž.defaultdict ์ธ์ž์— log_missing ์„ ๊ตฌํ˜„ํ•˜.. 2025. 3. 21.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 4์žฅ - ์ปดํ”„๋ฆฌํ—จ์…˜๊ณผ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ Better way 27 map๊ณผ filter ๋Œ€์‹  ์ปดํ”„๋ฆฌํ—จ์…˜์„ ์‚ฌ์šฉํ•˜๋ผ# map๊ณผ filter ์‚ฌ์šฉnumbers = [1, 2, 3, 4, 5, 6]even_numbers = list(filter(lambda x: x % 2 == 0, numbers))even_squares = list(map(lambda x: x ** 2, even_numbers))# ์ข‹์€ ์˜ˆ์‹œ - ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜even_squares = [x ** 2 for x in numbers if x % 2 == 0] Better way 28 ์ปดํ”„๋ฆฌํ—จ์…˜ ๋‚ด๋ถ€์— ์ œ์–ด ํ•˜์œ„ ์‹์„ ์„ธ ๊ฐœ ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ# ์•ˆ ์ข‹์€ ์˜ˆ์‹œmatrix = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]flattened = [num for laye.. 2025. 3. 18.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 3์žฅ - ํ•จ์ˆ˜ Better way 19 ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ ˆ๋Œ€๋กœ ๋„ค ๊ฐ’ ์ด์ƒ์„ ์–ธํŒจํ‚นํ•˜์ง€ ๋ง๋ผํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ, ์–ธํŒจํ‚น ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ์‰ฝ๋‹ค.# ์•ˆ์ข‹์€ ์˜ˆ์‹œ - ์–ธํŒจํ‚นํ•˜๋Š” ์ธ์ž์—์„œ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ, ์˜ค๋ฅ˜๋ฅผ ์ธ์ง€ํ•˜๊ธฐ ์–ด๋ ต๋‹คdef get_stats(numbers): minimum = min(numbers) maximum = max(numbers) count = len(numbers) average = sum(numbers) / count return minimum, maximum, count, average# ์ •์ƒ์ ์œผ๋กœ ํ˜ธ์ถœminimum, maximum, count, average = get_stats([1,2,3,4]) # average, count ์ˆœ์„œ๋ฅผ .. 2025. 3. 17.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 2์žฅ - ๋ฆฌ์ŠคํŠธ์™€ ๋”•์…”๋„ˆ๋ฆฌ Better way 11 ์‹œํ€€์Šค๋ฅผ ์Šฌ๋ผ์ด์‹ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํ˜€๋ผa = ['a', 'b', 'c', 'd', 'e']# ์ฒ˜์Œ ๋˜๋Š” ๋๊นŒ์ง€ ์Šฌ๋ผ์ด์‹ฑ ํ• ๋•Œ๋Š” ์ฒ˜์Œ๊ณผ ๋ ์ธ๋ฑ์Šค๋ฅผ ์ƒ๋žตํ•˜์žassert a[:5] == a[0:5] # Trueassert a[5:] == a[5:len(a)] # True# ์Šฌ๋ผ์ด์‹ฑ ๊ฒฐ๊ณผ๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒดb = a[3:]assert a is b # False (๋‹ค๋ฅธ ๊ฐ์ฒด)assert a[3:] == b # True# ์‹œ์ž‘๊ณผ ๋ ์ธ๋ฑ์Šค ์ƒ๋žตํ•˜๋ฉด ์›๋ž˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณต์‚ฌํ•œ ๋ฆฌ์ŠคํŠธb = a[:]print(b)>>> ['a', 'b', 'c', 'd', 'e'] Better way 12 ์ŠคํŠธ๋ผ์ด๋“œ์™€ ์Šฌ๋ผ์ด์Šค๋ฅผ ํ•œ ์‹์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ# ์Šฌ๋ผ์ด๋“œ list[์‹œ์ž‘:๋:์ฆ๊ฐ€๊ฐ’]x = ['๋นจ๊ฐ•', '์ฃผํ™ฉ', .. 2025. 3. 12.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 1์žฅ - ํŒŒ์ด์ฌ๋‹ต๊ฒŒ ์ƒ๊ฐํ•˜๊ธฐ Better Way 3. bytes์™€ str ์ฐจ์ด๋ฅผ ์•Œ์•„๋‘๋ผ# ์ž˜๋ชป๋œ ์˜ˆprint(b"hello" + "world") # TypeError ๋ฐœ์ƒ# ์˜ฌ๋ฐ”๋ฅธ ์˜ˆprint(b"hello" + b"world") # bytes๋ผ๋ฆฌ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅprint("hello" + "world") # str๋ผ๋ฆฌ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅbytes์™€ str์€ ๊ฒฐํ•ฉ์ด ๋ถˆ๊ฐ€๋Šฅ # ํ…์ŠคํŠธ ๋ชจ๋“œ๋กœ ํŒŒ์ผ ์ฝ๊ธฐ (str ๋ฐ˜ํ™˜)with open("example.txt", "r", encoding="utf-8") as f: text = f.read() print(text)# ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“œ๋กœ ํŒŒ์ผ ์ฝ๊ธฐ (bytes ๋ฐ˜ํ™˜)with open("example.txt", "rb") as f: binary_data = f.read() prin.. 2025. 3. 6.