Idiom์ด๋ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํ๋ ํน๋ณํ ๋ฐฉ๋ฒ. ๋งค๋ฒ ๋์ผํ ๊ตฌ๋๋ฅผ ๋ฐ๋ณตํด ๋ฐ๋ฅด๋ ๊ฒ์ด ์ผ๋ฐ์ . ๋์์ธ ํจํด์ ๊ณ ์ฐจ์์ ์ธ ๊ฐ๋ ์ผ๋ก ์ฝ๋๋ก ๋ฐ๋ก ๋ณํ๋์ง ์๋ ๋ฐ๋ฉด, idiom์ ํน์ ํ ์์ ์ ํ ๋ ์ฌ์ฉํ๋ ์ค์ ์ฝ๋๋ฅผ ๋งํ๋ค. Idiom์ ์ค์ ์ฝ๋์ด๋ฏ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ง๋ค ๋ค๋ฅด๋ค. ํนํ ํ์ด์ฌ์์๋ ํ์ด์ฌ ํน์ ์ idiom์ ๋ฐ๋ฅธ ์ฝ๋๋ฅผ pythonicํ๋ค๊ณ ํ๋ค.
index์ slice ์ดํดํ๊ณ indexing ๊ฐ๋ฅํ ๊ฐ์ฒด ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๊ธฐ.
Index: numbers[-1]
ํ์ด์ฌ์์๋ ๋ค๋ฅธ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ผ๋ถ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ํ์
์์ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ๋ ๊ฒ์ ์ง์ํ๋ค. ํน์ดํ ์ ์ ์์ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด ๋์์๋ถํฐ ์ ๊ทผ ๋ํ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
Slice: numbers[1:3]
์ฌ๋ผ์ด์ค๋ฅผ ์ฌ์ฉํด์ ํน์ ๊ตฌ๊ฐ์ ์์๋ค์ ํ๊บผ๋ฒ์ ๊ฐ์ ธ์ค๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
Interval = slice(์์ x ์ด์, y-1๊น์ง ๊ฐ์ ธ์จ๋ค)
Interval = slice(์์ x ์ด์:y-1๊น์ง ๊ฐ์ ธ์จ๋ค:z๊ฐ์ฉ ์ ํํ์ฌ)
์ธ๋ฑ์ค์ ์ฌ๋ผ์ด์ค๋ __getitem__ ์ด๋ ๋งค์ง ๋งค์๋๋ก ๋์ํ๋ค.
์ํ์ค๋ฅผ ์ฌ๋ผ์ด์ค ํด์ค๋ฉด deepcopy ์ผ๊น swallow copy ์ผ๊น?
mutableํ ์ํ์ค๊ฐ์ฒด์ด๋ฉด deepcopy์ด๊ณ , immutableํ ์ํ์ค๋ฉด swallow copy์ด๋ค.
์ํ์ค sequence:
๋งค์ง ๋งค์๋ __getitem__ ๊ณผ __len__ ์ด ๊ตฌํ๋ผ ์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด.
- list, tuple, string์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ์ํ์ค ๊ฐ์ฒด์ด๋ค.
์ดํฐ๋ฌ๋ธ iterable:
for a in any_list:
์์ any_list ๋ iterable์ด๊ณ for ๋ฌธ ์ ์ฒด๋ iterator๋ฅผ ๋ง๋ ๋ค.
์ปจํ ์คํธ ๋งค๋์ Context manager:
ํ์ด์ฌ์์ ์ฐ๋ with ๋ฌธ์ ๋งํ๋ค.
์ฃผ์ํ ๋์์ ์ ํ์ ์ ์ฒ๋ฆฌ๋ ํ์ฒ๋ฆฌ ์์
์ด ํ์ํ ๋ ์ ์ฉํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฆฌ์์ค ๊ด๋ฆฌ์ ๊ด๋ จํด ์ปจํ
์คํธ ๊ด๋ฆฌ์๋ฅผ ์์ฃผ ๋ณผ ์ ์๋ค.
e.g. ํ ๋น๋ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ๋ซ์์ฃผ๋ ์์
.
- ํ์ผ ๋์คํฌ๋ฆฝํฐ ๋์ถ์ ๋ง๊ธฐ ์ํด ํ์ผ์ ์คํ ํ ํ ํ์ํ ์์
์ ๋๋๋ฉด ๋ซ๋ ๊ฒ
- ์๋น์ค๋ ์์ผ์ ์ฐ๊ฒฐ์ ์ด์์ ๋, ์ ์ ํ ๋์ ๋ซ๊ฑฐ๋ ์์ ํ์ผ์ ์ ๊ฑฐํ๋ ๋ฑ.
with๋ฌธ(pep-343):
with๋ฌธ์ ๋งค์ง ๋งค์๋ __enter__ ์ __exit__ ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ํ๋ ๊ฐ์ฒด์ __enter__ ์ __exit__ ๋งค์ง ๋งค์๋๋ก ์ง์ ์ปจํ ์คํธ ๋งค๋์ ๊ตฌํํ ์ ์๋ค.