์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐฑํธ๋ํน
- BFS
- ์ฐ์ ์์ ํ
- 2023
- ๋ฌธ์์ด
- ์กฐํฉ๋ก
- ๋๋น ์ฐ์ ํ์
- NEXT
- ๋ถํ ์ ๋ณต
- ๊ฐ๋์_๋ง๋ก
- ํ๋ก์ด๋ ์์ฌ
- ๊ฐ๋์ ๋ง๋ก
- DP
- Overfitting
- ํฌ๋ฃจ์ค์นผ
- dropout
- ๋ฏธ๋๋_ํ์ฌ์_๊ณผ๊ฑฐ๋ก
- ์๋ฐ์คํฌ๋ฆฝํธ
- tensorflow
- ์๊ณ ๋ฆฌ์ฆ
- dfs
- pytorch
- object detection
- ์ธ๊ทธ๋จผํธ ํธ๋ฆฌ
- back propagation
- ๋ค์ต์คํธ๋ผ
- lazy propagation
- c++
- ์ด๋ถ ํ์
- ํ๊ณ ๋ก
- Today
- Total
Doby's Lab
๋ฌธ์์ด์ ๋ ๋ค์ํ๊ฒ ์ฌ์ฉํ ์๋ ์์๊น? (Raw String, docstring, ๋ฌธ์ํ) ๋ณธ๋ฌธ
๋ฌธ์์ด์ ๋ ๋ค์ํ๊ฒ ์ฌ์ฉํ ์๋ ์์๊น? (Raw String, docstring, ๋ฌธ์ํ)
๋๋น(Doby) 2024. 5. 4. 11:40๐ค Problem
์ค๋ ํฌ์คํ ์ ์ด๋ค ๋ฌธ์ ์ ์ ๊ฒช์๋ค๊ธฐ๋ณด๋ค๋ ์๋ก์ด ๊ฒ์ ๋ฐ๊ฒฌํ ๊ฒ์์ ์์ํ ํฌ์คํ ์ ๋๋ค. ๋ง์ด ์ ํ ๋ฌธ๋ฒ์ด์ง๋ง, ์ด๊ฒ์ด ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง๋ฅผ ๋ค๋ฃจ์ด๋ณด๋ ค ํฉ๋๋ค.
์คํ์์ค๋ฅผ ๋ณด๋ฉด, ์ด๋ฐ ์ฝ๋๋ค์ ๋ง์ด ๋ณด๊ฒ ๋ฉ๋๋ค.
class Model(nn.Module):
r"""
param(1): ~~~ํ ๋, ~~~๋ก ์ง์
param(2): ~~~ํ ๋, ~~~๋ก ์ง์
"""
def __init__(self, param1, param2):
super().__init__()
์ฒ์ ํ์ด์ฌ์ ๊ณต๋ถํ ๋๋ ๋ฐ์ดํ๋ฅผ 3๋ฒ ์ฐ๋ ๊ฒ์ด ์ฌ๋ฌ ์ค ์ฃผ์์ด๋ผ๋ ๊ฐ๋ ์ผ๋ก ์๊ณ ์์์ง๋ง, ์๊ฐ์ด ์ง๋์ ๋ค์ ์ ๊ฑธ ์ฐพ์๋ดค์ ๋๋ docstring์ด๋ผ ๋ถ๋ฆฌ๊ณ ์์๊ณ , ๋ฌธ์์ด ์์ ๋ถ๋ r์ Raw String์ด๋ผ๋ ๊ฒ์ ์๋ฏธํ๋๋ผ๊ณ ์.
๊ทธ๋์, ์ด ๋ ๊ฐ์ง ๊ฐ๋ ์ด ์ด๋ค ๊ฒ์ธ์ง ๊ธฐ๋ก์ ํด๋๋ ค๊ณ ํฉ๋๋ค.
๐ Solution
1๏ธโฃ docstring
docstring์ Documentation String์ ์ค์๋ง์ ๋๋ค. ๋ณดํต ์ฝ๋๋ฅผ ๋ฌธ์ํํ ๋, ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์คํ์์ค์ ํด๋์ค, ํจ์, ๋ชจ๋, ๋ฉ์๋๋ผ๋ฉด ๋ชจ๋ ์ด๋ค ์ญํ ์ ํ๊ณ , ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ด๋ค ๊ฒ์ ํ์๋ก ํ๋์ง ๊ฐ์ด๋๋ผ์ธ์ด ํ์ํฉ๋๋ค. docstring์ด ๊ทธ ์ญํ ์ ์ํํฉ๋๋ค.
docstring์ ์์น๋ ํด๋์ค, ํจ์, ๋ฉ์๋๋ผ๋ฉด ์ ์ธ ๋ฐ๋ก ์๋ซ์ค์ ๋ํ๋ด๊ณ , ๋ชจ๋์ด๋ผ๋ฉด ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ํ๋ ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ๋ฐ์ดํ๋ฅผ 3๊ฐ ์ฌ์ฉํด์ ๋ํ๋ด๋ฉด docstring ์ ์ธ์ด ๋๋ฉ๋๋ค. ๋งค์ฐ ๊ฐ๋จํด์!
๊ทธ๋ฌ๋ฉด, ์ด docstring(๋ฌธ์)๋ฅผ ์ด๋ป๊ฒ ํ์ธํ ๊น์? ์ด๊ฒ๋ ๊ฐ๋จํฉ๋๋ค. docstring์ ์์ฑํ ๋ชจ๋, ํด๋์ค, ํจ์, ๋ฉ์๋์๋ __doc__
์ด๋ผ๋ ์์ฑ์ด ์๊น๋๋ค. ์ด ์์ฑ์ด ๋ฌธ์์ ๋ด์ฉ์ ๋ด๊ณ ์๋ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ ๊ทธ์ ์ถ๋ ฅ๋ง ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
model = Model()
print(type(model.__doc__))
print(model.__doc__)
print(Model.__doc__)
#Output
<class 'str'>
param(1): ~~~ํ ๋, ~~~๋ก ์ง์
param(2): ~~~ํ ๋, ~~~๋ก ์ง์
param(1): ~~~ํ ๋, ~~~๋ก ์ง์
param(2): ~~~ํ ๋, ~~~๋ก ์ง์
๊ทธ๋ฆฌ๊ณ , ๋ง์ง๋ง์ผ๋ก docstring์ ํน์ดํ ์ ์ด ํ๋ ์์ต๋๋ค.
docstring์ด ๋ง์ฝ์ ์๋์ ๊ฐ์ด ์์ฑ๋ ๊ฒฝ์ฐ๋ฅผ ๋ด ์๋ค.
class Model(nn.Module):
"""
param(1): ~~~ํ ๋, ~~~๋ก ์ง์
param(2): ~~~ํ ๋, ~~~๋ก ์ง์
'str1 ' "str2"
tab1
tab2
"""
์๋์ ๋ฌธ์์ด์ ์ ์ธ์ ํ๋ ๊ฒฝ์ฐ์๋ ์ค ๋๊น, ๋ฐ์ดํ, ๊ณต๋ฐฑ(ํญ) ๊ด๋ จ ๋ฌธ์๋ฅผ ๋ฃ๊ธฐ ์ํด์๋ ๋ฐฑ์ฌ๋์๋ก ์ด์ค์ผ์ดํ ๋ฌธ์๋ฅผ ๋ํ๋ด์ผ ํ์ต๋๋ค.
ํ์ง๋ง, docstring์ ๊ทธ๋ฐ ๊ฒ์ผ๋ก ๊ณ ๋ คํ์ง ์๊ณ , ์ ๋ง ํ๋์ ๋ฌธ์์ฒ๋ผ ์์ฑํ๋ฉฐ ์ด์ค์ผ์ดํ ๋ฌธ์ ์์ด ๊ทธ๋๋ก ์ถ๋ ฅํ ์ ์๋ค๋ ์ ์ด ํน์ดํ ์ ์ด์ ๋ฌธ์ํ๋ฅผ ํ ๋ ํธํ ์ ์ ๋๋ค.
(+ ๊ทธ๋ฌ๋ฉด '์ด์ค์ผ์ดํ ๋ฌธ์๋ก ๋ํ๋ธ ์ค ๋๊น, ๋ฐ์ดํ, ๊ณต๋ฐฑ(ํญ)์ ๋ชป ํ๋ ๊ฒ์ด๋?'๋ผ๊ณ ์ง๋ฌธํ ์ ์์ต๋๋ค. ๋ชป ํ์ง ์์ต๋๋ค. ์ฌ์ ํ ๊ทธ ๊ธฐ๋ฅ๋ค ๋ํ ์ํ์ ํฉ๋๋ค.)
2๏ธโฃ Raw String
docstring์ ๋ฐ์ดํ 3๊ฐ๋ก ๋ํ๋ธ๋ค๊ณ ํ๋๋ฐ, ๋งจ ์์ ์์์์๋ ๋ฐ์ดํ 3๊ฐ ์์ r์ด๋ผ๋ ๋ฌธ์๊ฐ ๋ถ์ต๋๋ค.
์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๋ docstring๋ณด๋ค ๋ ๊ฐ๋จํ๋ฉฐ, ์ด๋ Raw String์ ์๋ฏธํฉ๋๋ค.
Raw String์ r์ ๋ฐ์ ๋ํ๋ด๋ ํํํ ๋ฌธ๋ฒ์ผ๋ก, 'Raw String์ด๋ ์ด์ค์ผ์ดํ ๋ฌธ์(๋ฐฑ์ฌ๋์)๋ฅผ ์ ๋ถ ๋ฌด์ํ๋ค'๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๋๋ค.
์์๋ฅผ ๋ํ๋ด๋ณด๋ฉด, ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
a = "abc\nabc"
b = r"abc\nabc"
print(a)
print(b)
#Output
abc
abc
abc\nabc
๋ฌธ์์ด b๊ฐ Raw String์ ์ฌ์ฉํ ์์์ ๋๋ค. ์ด์ค์ผ์ดํ ๋ฌธ์๊ฐ ์ ์ฉํ๋ ๋ฌธ๋ฒ์ ๋ฌด์ํ๊ณ ๋ฐฑ์ฌ๋์๋ฅผ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
3๏ธโฃ docstring + Raw String
๊ทธ๋์ ๋ ๋ฌธ๋ฒ์ ์ฝ๋์ ๋ฌธ์ํ๋ฅผ ์ํด ์กฐํฉ์ ์์ผ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์๋ํ๋ฉด, docstring ๋จ๋ฝ์์ ๋งํ ๊ฒ์ฒ๋ผ docstring์ ์ฌ์ฉํ๋๋ผ๋ ์ด์ค์ผ์ดํ ๋ฌธ์๋ ๊ทธ๋๋ก ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์์ ๋ฐฑ์ฌ๋์ ๊ด๋ จ ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๊ณ ์ถ์ ๋, ๋ ์กฐํฉ์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
๐ Reference
'Code about AI > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
pip install -e์ ์๋ฏธ, ์์ง๋ ํจํค์ง ๊ทธ๋ ๊ฒ ํธ์งํ์ธ์? (4) | 2024.07.22 |
---|---|
์๋์ฝ๋ค ๋ง๊ณ ๋ค๋ฅธ ๊ฐ์ ํ๊ฒฝ์ ์์๊น? (venv) (1) | 2024.05.11 |
return self, ๋๋ฅผ ์ ๋ฆฌํด ํด์ผ ํ ๊น? (Method Cascading) (0) | 2024.04.27 |
์์์ ํ ๋, super().__init__()์ ํ์ง ์๋๋ค๋ฉด? (0) | 2023.11.11 |
(os ๋ชจ๋์ ๋์ฒดํ๋) pathlib ํจํค์ง (0) | 2023.06.26 |