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

๐Ÿ Python17

์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 7์žฅ - ๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ ๋™์‹œ์„ฑ vs ๋ณ‘๋ ฌ์„ฑ๊ตฌ๋ถ„๋™์‹œ์„ฑ (Concurrency)๋ณ‘๋ ฌ์„ฑ (Parallelism)์˜๋ฏธ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์ฒ˜๋ฆฌ (๊ฒ‰์œผ๋กœ๋Š” ๋™์‹œ์—)์—ฌ๋Ÿฌ ์ž‘์—…์„ ์‹ค์ œ๋กœ ๋™์‹œ์— ์ฒ˜๋ฆฌ์ฒ˜๋ฆฌ ๋ฐฉ์‹ํ•˜๋‚˜์˜ ์ฝ”์–ด๊ฐ€ ์ž‘์—…์„ ๋น ๋ฅด๊ฒŒ ์ „ํ™˜ํ•˜๋ฉฐ ์ฒ˜๋ฆฌ์—ฌ๋Ÿฌ ์ฝ”์–ด๊ฐ€ ๊ฐ ์ž‘์—…์„ ๋™์‹œ์— ์‹คํ–‰์˜ˆ์‹œ์นดํŽ˜์—์„œ ํ˜ผ์ž ์ฃผ๋ฌธ ๋ฐ›๊ณ , ๊ณ„์‚ฐํ•˜๊ณ , ์Œ๋ฃŒ ๋งŒ๋“ค๊ธฐ์นดํŽ˜์—์„œ ์„ธ ๋ช…์ด ๊ฐ๊ฐ ์ฃผ๋ฌธ, ๊ณ„์‚ฐ, ์Œ๋ฃŒ ๋งŒ๋“ค๊ธฐ๋ชฉ์ ์‘๋‹ต์„ฑ ํ–ฅ์ƒ, I/O ๋Œ€๊ธฐ ์‹œ๊ฐ„ ํ™œ์šฉ์ฒ˜๋ฆฌ ์†๋„ ํ–ฅ์ƒํŒŒ์ด์ฌ์Šค๋ ˆ๋“œ, ์ฝ”๋ฃจํ‹ด (asyncio)ํ•˜์œ„ ํ”„๋กœ์„ธ์Šค, C ํ™•์žฅ, ์‹œ์Šคํ…œ ์ฝœ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ด๋ฒคํŠธ ๋ฃจํ”„, ํ”„๋กœ๋ฏธ์Šค, async/await Web Workers, Node.js์˜ Worker Threads GIL (Global Interupt Lock)ํŒŒ์ด์ฌ์—๋Š” GIL์ด๋ผ๋Š” ์ „์—ญ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฝ์ด ์กด์žฌํ•จํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๋งŒ ํŒŒ.. 2025. 4. 1.
์ดํŽ™ํ‹ฐ๋ธŒ ํŒŒ์ด์ฌ 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.