Python-future: ๋ถˆํ•„์š”ํ•˜๊ฒŒ list() ํ˜ธ์ถœ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด lib2to3.fixes.fix_dict๋ฅผ ๊ต์ฒดํ•˜์‹ญ์‹œ์˜ค.

์— ๋งŒ๋“  2017๋…„ 09์›” 08์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PythonCharmers/python-future

lib2to3.fixes.fix_dict ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํ†ตํ™” ํฌ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค dict.keys() , .values() ๋˜๋Š” .items() ์—์„œ list() ๋” ๋ฌธ๋งฅ์„ ์ค‘์š”.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ง์ ‘ ๋ฐ˜๋ณต๋˜๊ฑฐ๋‚˜(์˜ˆ: for k, v in d.items() ) ํฌํ•จ ์—ฌ๋ถ€๊ฐ€ ํ™•์ธ๋˜์–ด(์˜ˆ: if a in d.keys() ) ๋งŽ์€ diff- ๋˜๋Œ๋ฆด ์†Œ์Œ.

python-future์— ์ด๋Ÿฌํ•œ ์„ฑ๊ฐ€์‹ฌ์„ ํ”ผํ•˜๋Š” ์ž์ฒด dict-iteration ํ•ด๊ฒฐ์‚ฌ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

0.21 enhancement

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

์‚ฌ์ „์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋™์•ˆ ๋ณด๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด RuntimeError๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for ๋ฃจํ”„ ๋‚ด๋ถ€๊ฐ€ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ list() ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

์‚ฌ์ „์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋™์•ˆ ๋ณด๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด RuntimeError๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋ฐ˜๋ณตํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

for ๋ฃจํ”„ ๋‚ด๋ถ€๊ฐ€ ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ list() ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‚ด ์ž์‹ ์˜ " fix_dict_methods "๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

"""Fixer for some dict methods.

Imports these compatibility methods from `future.utils`.

d.iterkeys() -> iterkeys(d)
d.iteritems() -> iteritems(d)
d.itervalues() -> itervalues(d)

d.viewkeys() -> viewkeys(d)
d.viewitems() -> viewitems(d)
d.viewvalues() -> viewvalues(d)
"""

์ฒœ์ฒœํžˆ ๋‹จ๊ณ„์ ์œผ๋กœ ๋ฏธ๋ž˜ํ™”๋˜๊ณ  ์žˆ๋Š” PY2 ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋” ์•ˆ์ „ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•„์ง ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋งŽ์ด ์ฐพ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— list() ์˜ ๊ฐ„๋‹จํ•œ .keys/values/items() ํ˜ธ์ถœ๋„ ๋ž˜ํ•‘ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ณ„๋„์˜ ๋‹จ๊ณ„๋กœ ํ›„์† ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ผ๋ฐ˜ fix_dict ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

fix_dict ์˜ ์ด ๋ณ€ํ˜•์— ๊ด€์‹ฌ์ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”. ์ €๋„ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (์•„๋งˆ๋„ fix_dict_methods_with_import ?)

์•ˆ๋…•ํ•˜์„ธ์š” @rdrey , ์ €๋Š” ์ด ๋ณ€์ข…์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ˜๋ณต์ž๋งŒ ํ•„์š”ํ•  ๋•Œ ํ•ญ์ƒ iter ๋ฒ„์ „์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜ fix_dict ์ „์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@rkouye ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค: https://gist.github.com/rdrey/a307f46f7708b65421061374a14d60e9

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