Numpy: float32๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2015๋…„ 12์›” 19์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

cuBLAS + numpy๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. cuBLAS๋Š” float32์—์„œ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋ฉฐ CPU๋ณด๋‹ค 10๋ฐฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋งค๋ฒˆ ์†์œผ๋กœ dtype=float32๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ง€๋ฃจํ•ฉ๋‹ˆ๋‹ค. random.rand()๋Š” float32 ๋ฐฐ์—ด ์ƒ์„ฑ์„ ์ง€์›ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.
์–ด์จŒ๋“  numpy์—์„œ ๊ธฐ๋ณธ ์ •๋ฐ€๋„๋ฅผ float32๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

numpy.dtype

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ ๊ฝค ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  21 ๋Œ“๊ธ€

์—†์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋Ÿฐ ๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ทธ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ์ „์—ญ ์ƒํƒœ์—ฌ์•ผ ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ „์—ญ ์ƒํƒœ๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค(์˜ˆ: ์‚ฌ๋žŒ๋“ค์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‚ด์—์„œ ๊ธฐ๋ณธ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ , ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๋ จ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๋Š” ๊ด€๋ จ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ numpy๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด์ƒํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ž์‹ ๋งŒ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

def array(*args, **kwargs):
    kwargs.setdefault("dtype", np.float32)
    return np.array(*args, **kwargs)

์ด๊ฒƒ์€ ๊ฝค ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(Stack Overflow์—์„œ ์ด์— ๋Œ€ํ•ด ๋ฌป๋Š” ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋ง๋ถ™์ด์ž๋ฉด, ์ „์—ญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ƒํƒœ๋Š” ์‹ค์ œ๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ _only_ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ํŒŒ์ผ ๊ตฌ์„ฑ ๋˜๋Š” ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Theano ๋Š” ๊ตฌ์„ฑ ํŒŒ์ผ๊ณผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ float ํฌ๊ธฐ(Theano์˜ floatX ์™€ ๊ฐ™์€)์™€ ๊ธฐ๋ณธ ์ •์ˆ˜ ํฌ๊ธฐ(๊ทธ๋ฆฌ๊ณ  ํ‘ธ์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ณตํ•ฉ ํฌ๊ธฐ๋„ ๊ฐ€๋Šฅ)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฑฐ์˜ ์ค‘์š”ํ•˜์ง€ ์•Š์ง€๋งŒ NumPy์—๋Š” ์ด๋ฏธ ์ตœ์†Œํ•œ _some_ ์ „์—ญ ์ƒํƒœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: set_printoptions (์›์น™์ ์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์—‰๋ง์ด ๋  ์ˆ˜ ์žˆ์Œ); ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ท ์ผํ•œ ๋ฐฉ๋ฒ•์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡๊ฒŒ ๋‚˜์œ ์ƒ๊ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ๋งŽ์€ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ณ  ๋ถ„๋ช…ํžˆ ๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž ์žฌ์ ์ธ ๋กœ๋“œ๋งต ํ•ญ๋ชฉ์œผ๋กœ๋งŒ ๊ณ ๋ คํ•˜๋”๋ผ๋„ ๊ณ ๋ คํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ ๋”ฅ ๋Ÿฌ๋‹(tensorflow, pytorch ๋“ฑ)์—์„œ ์‚ฌ๋žŒ๋“ค์ด 64๋น„ํŠธ๋ณด๋‹ค ์ž‘์€ ์ •๋ฐ€๋„ ๋ฐฐ์—ด์„ ๊ฑฐ์˜ 100% ์‹œ๊ฐ„(์ฃผ๋กœ 32๋น„ํŠธ์ด์ง€๋งŒ ํ˜ผํ•ฉ ์ •๋ฐ€๋„ ๋ฐ ์–‘์žํ™” ๋ชจ๋ธ์ด ๋งŽ์€ ๊ธฐ๋ฐ˜์„ ์–ป๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ƒ์œ„ ๊ณต๊ธ‰์—…์ฒด์˜ ๊ณต์‹ ์ง€์›)

๋‚˜๋Š” ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. np.array ๋ฅผ ๋งŽ์ด ํ˜ธ์ถœํ•˜๋Š” ๋งค์šฐ ๊ธด ๋ชจ๋“ˆ์—์„œ ๋งค์šฐ ํฐ ํ–‰๋ ฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์  ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ํ˜ธ์ถœ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(dtype=np.float32). float64 ๋Œ€์‹  float32๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก numpy์— ์ง€์‹œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. OS๋Š” ์ง€๊ธˆ ๊ต์ฒด ์ค‘์ž…๋‹ˆ๋‹ค. ๋„์™€์ฃผ์„ธ์š”.

๋งค๋ฒˆ ์ด๋Ÿฌ๋Š”๊ฒŒ ์‹ซ์–ด

@soulslicer ์ด ๋ฌธ์ œ๋Š” ์ข…๋ฃŒ๋˜์—ˆ์œผ๋ฉฐ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋ž˜์— ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ธฐ๋ณธ dtype์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด np.array๋ฅผ ์›์ˆญ์ด ํŒจ์น˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ™”ํ˜• ์ž‘์—…์„ ์œ„ํ•ด PYTHONSTARTUP ๋ฅผ ํ†ตํ•ด Python ์‹œ์ž‘ ์‹œ ํ˜ธ์ถœ๋˜๋„๋ก ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ํŒŒ์ผ์— ๋„ฃ๊ณ  ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์‹œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import numpy as np
_oldarray = np.array
def array32(*args, **kwargs):
    if 'dtype' not in kwargs:
        kwargs['dtype] = 'float32'
    _oldarray(*args, **kwargs)
np.array = _oldarray

ํ—ˆ, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ;)

from functools import partial
import numpy as np
array32 = partial(np.array, dtype=np.float32)

์ฐธ๊ณ ๋กœ ๋”ฅ ๋‰ด๋Ÿด ๋„คํŠธ์›Œํฌ๊ฐ€ ๋„ˆ๋ฌด ๊ฑฐ๋Œ€ํ•ด์ง€๋ฉด ์ด ๊ธฐ๋Šฅ์„ ์ฐพ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ ์  ๋” ๋งŽ์•„์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ใ…‹ใ…‹ @๋„˜ํ”ผ

์ด๋ด, ๋‚œ ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ 38 ๊ธฐ๊ฐ€๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฐ ์ˆซ์ž๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค

@JadBatmobile ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€

njsmith๋Š” 3๋…„ ์ „์— ์ด "๊ธฐ๋Šฅ"์ด ๋งค์šฐ ์‰ฝ๊ฒŒ(ํ•œ ์ค„์˜ ์ฝ”๋“œ์—์„œ ์ฝ์Œ) ๋งŽ์€ ์ž ์žฌ ๋ฐ ๋น„-๋กœ์ปฌ ๋ฒ„๊ทธ๋กœ ์ด์–ด์ง€๋Š” ์ด์œ ๋ฅผ ๋ช…ํ™•ํ•œ ์šฉ์–ด๋กœ ์„ค๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ "๊ธฐ๋Šฅ"์€ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ์ƒ๊ฐ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ทธ๊ฒƒ์„ ์ฑ…์ž„๊ฐ ์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ: ์ด ์Šค๋ ˆ๋“œ์—์„œ ์–ธ๊ธ‰๋œ ์—ฌ๋Ÿฌ ์ œ์•ˆ ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ณ (๊ทธ๋ฆฌ๊ณ  ๋” ๋งŽ์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„) ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ด ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

@adeak ์ด๊ฒƒ์ด ์ข‹์€ ์ƒ๊ฐ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๋ถ€ ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ์ข‹์€ ์ ˆ์ถฉ์•ˆ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜์‚ฌ ์ฝ”๋“œ:

<strong i="8">@contextmanager</strong>
def default_dtype(dtype):
    # read current default dtype and change to the one provided
    original_dtype = read_current_default_dtype()
    change_default_dtype(dtype)
    yield
    # change default dtype to original value
    change_default_dtype(original_dtype)

์šฉ๋ฒ•:

with np.default_dtype(np.float32):
    # do float32 stuff

@dankal444 ๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด ์ •๋ฆฌ์— ๋Œ€ํ•œ ๋ณด์žฅ ์—†์ด ์‚ฌ๋žŒ๋“ค์ด ๊ฒŒ์œผ๋ฅด๊ณ  ๋ถˆ๊ธธํ•œ change_default_dtype(dtype) ์ˆ˜๋™์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค.

@adeak ๋‚˜๋Š” ์ด "๋ถˆ๊ธธํ•œ" ๋ฐฉ๋ฒ•์ด ์‚ฌ๋žŒ๋“ค์˜ ๊ด€์ ์—์„œ ์ˆจ๊ฒจ์งˆ ์ˆ˜ ์žˆ๊ณ  ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๊ธฐ๋Šฅ์„ ์š”๊ตฌํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž์— ๋งŒ์กฑํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ผ ์‚ฌ์šฉ์ž ์ง€์ • ๊ตฌ์„ฑ ๋‹จ๊ณ„ ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ „์—ญ ์ƒํƒœ๊ฐ€ ์žˆ๋Š” ๋น„๊ณต๊ฐœ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜์ง€ ๋ชปํ•˜๊ณ  ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ ๊ด€๋ฆฌ์ž๊ฐ€ ๋งŽ์€ ๋„์›€์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•ฉ๋‹นํ•œ ์ด์œ ์—์„œ ๋” ํฐ ์ •๋ฐ€๋„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์šด์ŠคํŠธ๋ฆผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ์— ํ•ญ์ƒ ๋ถ€๋”ชํž ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์  ์žฅ, ๋‹น์‹ ์€ segfault๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด C-์ธํ„ฐํŽ˜์ด์‹ฑ ์ฝ”๋“œ๋Š” ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์ด ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์žฌํ™•์ธํ•  ์ด์œ ๊ฐ€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‚ฎ์€ ์ˆ˜์ค€์—์„œ NPY_DEFAULT_TYPE์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ numpy๊ฐ€ ์ด ๋ณ€์ˆ˜ โ€‹โ€‹๊ฐ’์„ float32๋กœ ์ˆ˜์ •ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ƒˆ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ np.float32 dtype์„ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ๊ณ ํ†ต์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

https://docs.scipy.org/doc/numpy-1.15.1/reference/c-api.dtype.html?highlight=default_type#c.NPY_DEFAULT_TYPE

2zly45

[Bob] ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ RAM์˜ 90%๋ฅผ ์†Œ๋น„ํ•˜๋Š” ์ž„์˜์˜ float32 ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?
[Numpy] RAM์„ ๋‘ ๋ฐฐ๋กœ ๋Š˜๋ฆฌ์‹ญ์‹œ์˜ค ...

์š”์ฆˆ์Œ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์€ ํ‘œํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šด ์˜๊ฒฌ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ ์˜๊ฒฌ์€ ์ด๊ฒƒ์ด ์•„๋งˆ๋„ ์ œ๊ฐ€ ๋ณธ ๊ฒƒ ์ค‘ ๊ฐ€์žฅ "๋ฏธ์ณค๊ณ  ๋ฌด์ž๋น„ํ•œ"* โ€‹โ€‹๋””์ž์ธ ๊ฒฐ์ • ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ ์ •๋‹นํ•œ ์ง€๋ช…์„ ๋ฐ›์„ ์ž๊ฒฉ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ œ ๊ฐœ์ธ ๋ช…์˜ˆ์˜ ์ „๋‹น

"๋ฏธ์ณค๊ณ  ๋ฌด์ž๋น„ํ•œ"* โ€‹โ€‹- ๋Ÿฌ์‹œ์•„์–ด์—์„œ ์œ ๋ž˜ํ•œ ๊ด€์šฉ ํ‘œํ˜„

[๊ฒฉ์–ธ 1] ์ œํ•œ์ ์ด๋ผ๋ฉด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ์–‡์€์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
[Aphorism 2] "pythonic"์€ ๋งŽ์€ ๊ฒฝ์šฐ์— ๋ถ€๋„๋Ÿฌ์›€์„ ๋ฎ๋Š” ๋งˆ์ง€๋ง‰ ๋ ˆ์ด๋ธ”์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์˜ ๊ธฐ์–ต์„ ๋‚ญ๋น„ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ธฐ ๋•Œ๋ฌธ ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๊ฒƒ๋“ค์„ ๊นจ๋œจ๋ฆฌ๊ณ  ๋‹น์‹ ์ด ์กฐ์šฉํžˆ ์ž˜๋ชป๋œ ๋‹ต์„ ์–ป๋„๋ก ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๊ฒƒ์ด "๋ถ„๋ช…ํ•œ" ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ธฐ์— ์•ˆ์ „ํ•œ ๋•Œ์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋•Œ๋ฅผ ํŒ๋‹จํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธ์‹œ์ผœ์ค๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘๊ฐ€ ๊ฒช๊ณ  ์žˆ๋Š” ๊ณ ํ†ต์„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ „์ ์œผ๋กœ ์œ ํšจํ•˜๋ฉฐ ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๋ฉด ๋•๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š๋Š” ๊ณ„ํš์„ ์„ธ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ๋ถ„๋ช…ํžˆ ๋น„์ƒ์‚ฐ์ ์ธ ๋Œ“๊ธ€์„ ์œ„ํ•œ ์ž์„์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž ๊ธ‰๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์•„์ด๋””์–ด๊ฐ€ ์žˆ์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰