λ¬Έμμ΄μ λ λ€μνκ² μ¬μ©ν μλ μμκΉ? (Raw String, docstring, λ¬Έμν)
π€ 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
24. Docstring - λ¬Έμν
- νμ΄μ¬μ μ νλ©΄μ, μ¬λ¬κ°μ§λ‘ λ©μ§λ€λΌκ³ μκ°νλ κ² μ€μ νλ - docstringμ μμ±νλ©΄, νλ‘κ·Έλλ°μ μμ±μΌλ‘ μ κ·Όν μ μμ. ## 1. docstring μ΄λ …
wikidocs.net