Pythonμ `keyword` λͺ¨λμ λν ν¬κ΄μ μ΄κ³ μ¬μΈ΅μ μΈ κ°μ΄λμ λλ€. κ°λ ₯ν λ©ν νλ‘κ·Έλλ°, μ½λ μμ± λ° μ ν¨μ± κ²μ¬λ₯Ό μν΄ μμ½λ ν€μλλ₯Ό λμ΄, νμΈ λ° κ΄λ¦¬νλ λ°©λ²μ λ°°μ°μΈμ.
Pythonμ `keyword` λͺ¨λ: μμ½μ΄μ λν κΆκ·Ήμ μΈ κ°μ΄λ
λͺ¨λ νλ‘κ·Έλλ° μΈμ΄μ κ΄λν μΈκ³μμ νΉμ λ¨μ΄λ€μ μ μ±ν©λλ€. μ΄ λ¨μ΄λ€μ μ 체 ꡬ문μ νλλ‘ λ¬Άλ ꡬ쑰μ κΈ°λ₯μ΄μ λ¬Έλ²μ μ μ°©μ μ
λλ€. Pythonμμλ μ΄λ₯Ό ν€μλ λλ μμ½μ΄λΌκ³ λΆλ¦
λλ€. λ³μ μ΄λ¦κ³Ό κ°μ΄ μλλ λͺ©μ μ΄μΈμ μ©λλ‘ μ¬μ©νλ €κ³ νλ©΄ μ¦κ°μ μ΄κ³ λ¨νΈν `SyntaxError`κ° λ°μν©λλ€. νμ§λ§ μ΄λ¬ν ν€μλλ€μ μ΄λ»κ² μΆμ ν μ μμκΉμ? μμ±νλ μ½λλ μλ½νλ μ¬μ©μ μ
λ ₯μ΄ μ€μλ‘ μ΄ μ μ±ν μμμ μΉ¨λ²νμ§ μλλ‘ μ΄λ»κ² 보μ₯ν μ μμκΉμ? ν΄λ΅μ Python νμ€ λΌμ΄λΈλ¬λ¦¬μ κ°λ¨νκ³ μ°μνλ©° κ°λ ₯ν λΆλΆμΈ keyword
λͺ¨λμ μμ΅λλ€.
μ΄ ν¬κ΄μ μΈ κ°μ΄λλ keyword
λͺ¨λμ λν μ¬μΈ΅μ μΈ λ΄μ©μ λ€λ£° κ²μ
λλ€. Python ꡬ문μ κ·μΉμ λ§ λ°°μ°λ μ΄λ³΄μμ΄λ , κ°λ ₯ν μ ν리μΌμ΄μ
μ ꡬμΆνλ μ€κΈ κ°λ°μμ΄λ , νλ μμν¬ λ° μ½λ μμ±κΈ°λ₯Ό μμ
νλ κ³ κΈ νλ‘κ·Έλλ¨Έμ΄λ , μ΄ λͺ¨λμ λ§μ€ν°νλ κ²μ λ κΉλνκ³ μμ νλ©° μ§λ₯μ μΈ Python μ½λλ₯Ό μμ±νκΈ° μν νμμ μΈ λ¨κ³μ
λλ€.
Pythonμμ ν€μλλ μ νν 무μμΌκΉμ?
Python ꡬ문μ κΈ°μ΄
ν΅μ¬μ μΌλ‘ ν€μλλ Python μΈν°ν리ν°μ νΉλ³νκ³ λ―Έλ¦¬ μ μλ μλ―Έλ₯Ό κ°λ λ¨μ΄μ λλ€. μ΄ λ¨μ΄λ€μ λ¬Έμ₯κ³Ό μ½λ λΈλ‘μ ꡬ쑰λ₯Ό μ μνκΈ° μν΄ μΈμ΄μ μν΄ μμ½λμ΄ μμ΅λλ€. μ΄λ€μ Python μΈμ΄μ λμ¬ λ° μ μμ¬λ‘ μκ°ν΄λ³΄μΈμ. μ΄λ€μ μΈν°ν리ν°μκ² λ¬΄μμ ν΄μΌ νλμ§, μ΄λ»κ² λΆκΈ°ν΄μΌ νλμ§, μΈμ λ°λ³΅ν΄μΌ νλμ§, κ·Έλ¦¬κ³ κ΅¬μ‘°λ₯Ό μ μνλ λ°©λ²μ μλ €μ€λλ€.
μ΄λ¬ν νΉλ³ν μν λλ¬Έμ ν€μλλ₯Ό μλ³μλ‘ μ¬μ©ν μ μμ΅λλ€. μλ³μλ λ³μ, ν¨μ, ν΄λμ€, λͺ¨λ λλ λ€λ₯Έ κ°μ²΄μ λΆμ¬νλ μ΄λ¦μ λλ€. ν€μλμ κ°μ ν λΉνλ €κ³ νλ©΄ Pythonμ νμκ° μ½λκ° μ€νλκΈ°λ μ μ μ΄λ₯Ό λ§μ΅λλ€:
μλ₯Ό λ€μ΄, `for`λ₯Ό λ³μ μ΄λ¦μΌλ‘ μ¬μ©νλ €κ³ μλ:
# μ΄ μ½λλ μ€νλμ§ μμ΅λλ€
for = "loop variable"
# κ²°κ³Ό -> SyntaxError: invalid syntax
μ΄ μ¦κ°μ μΈ νΌλλ°±μ μ’μ κ²μ
λλ€. μ΄λ μΈμ΄ ꡬ쑰μ 무결μ±μ 보νΈν©λλ€. μ΄λ¬ν νΉλ³ν λ¨μ΄ λͺ©λ‘μλ if
, else
, while
, for
, def
, class
, import
, return
κ³Ό κ°μ μΉμν λ¨μ΄λ€μ΄ ν¬ν¨λ©λλ€.
μ€μν ꡬλΆ: ν€μλ vs. λ΄μ₯ ν¨μ
Pythonμ μ²μ μ νλ κ°λ°μλ€μκ² νν νΌλμ μ£Όλ μ§μ μ ν€μλμ λ΄μ₯ ν¨μμ μ°¨μ΄μ λλ€. λ λ€ μ΄λ€ μν¬νΈ μμ΄λ λ°λ‘ μ¬μ©ν μ μμ§λ§, κ·Έ λ³Έμ§μ κ·Όλ³Έμ μΌλ‘ λ€λ¦ λλ€.
- ν€μλ: μΈμ΄ μ체μ ꡬ문 μΌλΆμ λλ€. λ³κ²½ν μ μμΌλ©° μ¬ν λΉν μ μμ΅λλ€. μ΄λ€μ λ¬Έλ²μ λλ€.
- λ΄μ₯ ν¨μ:
print()
,len()
,str()
,list()
μ κ°μ΄ μ μ λ€μμ€νμ΄μ€μ 미리 λ‘λλ ν¨μμ λλ€. μ’μ§ μμ κ΄νμ΄μ§λ§, μ¬ν λΉν μ μμ΅λλ€. μ΄λ€μ νμ€ μ΄νμ μΌλΆμ΄μ§ ν΅μ¬ λ¬Έλ²μ μλλλ€.
μμλ₯Ό ν΅ν΄ μ€λͺ ν΄ λ³΄κ² μ΅λλ€:
# ν€μλλ₯Ό μ¬ν λΉ μλ (μ€ν¨)
try = "attempt"
# κ²°κ³Ό -> SyntaxError: invalid syntax
# λ΄μ₯ ν¨μ μ¬ν λΉ (μλνμ§λ§, λ§€μ° μ’μ§ μμ μμ΄λμ΄μ
λλ€!)
print("This is the original print function")
print = "I am no longer a function"
# λ€μ μ€μ 'print'κ° μ΄μ λ¬Έμμ΄μ΄λ―λ‘ TypeErrorλ₯Ό λ°μμν¬ κ²μ
λλ€
# print("This will fail")
μ΄λ¬ν ꡬλΆμ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€. keyword
λͺ¨λμ 첫 λ²μ§Έ λ²μ£Ό, μ¦ Python μΈμ΄μ μ§μ ν, μ¬ν λΉ λΆκ°λ₯ν μμ½μ΄λ§μ λ€λ£Ήλλ€.
`keyword` λͺ¨λ μκ°: νμ ν΄ν·
μ΄μ ν€μλκ° λ¬΄μμΈμ§ μμ보μμΌλ, ν€μλλ₯Ό κ΄λ¦¬νλλ‘ μ€κ³λ λꡬλ₯Ό λ§λλ΄
μλ€. keyword
λͺ¨λμ Python νμ€ λΌμ΄λΈλ¬λ¦¬μ λ΄μ₯ λΆλΆμ
λλ€. μ¦, pip
μΌλ‘ μ무κ²λ μ€μΉν νμ μμ΄ μΈμ λ μ§ μ¬μ©ν μ μμ΅λλ€. κ°λ¨ν import keyword
λ§ νλ©΄ λ©λλ€.
μ΄ λͺ¨λμ λ κ°μ§ μ£Όμνκ³ κ°λ ₯ν κΈ°λ₯μ μ 곡ν©λλ€:
- λμ΄: νμ¬ μ€ν μ€μΈ Python λ²μ μ λν λͺ¨λ ν€μλμ μμ νκ³ μ΅μ λͺ©λ‘μ μ 곡ν©λλ€.
- νμΈ: μ£Όμ΄μ§ λ¬Έμμ΄μ΄ ν€μλμΈμ§ λΉ λ₯΄κ³ μμ μ μΌλ‘ νμΈνλ λ°©λ²μ μ 곡ν©λλ€.
μ΄λ¬ν κ°λ¨ν κΈ°λ₯λ€μ λ¦°ν°λ₯Ό ꡬμΆνλ κ²λΆν° λμ μ΄κ³ μμ ν μμ€ν μ λ§λλ κ²μ μ΄λ₯΄κΈ°κΉμ§ κ΄λ²μν κ³ κΈ μ ν리μΌμ΄μ μ κΈ°λ°μ΄ λ©λλ€.
`keyword` λͺ¨λμ ν΅μ¬ κΈ°λ₯: μ€μ© κ°μ΄λ
keyword
λͺ¨λμ λͺ κ°μ§ μμ±κ³Ό ν¨μλ₯Ό ν΅ν΄ μ£Όμ κΈ°λ₯μ λ
ΈμΆνλ λ°©μμΌλ‘ μλ¦λ΅κ² λ¨μν©λλ€. κ°κ°μ μ€μ μμμ ν¨κ» μ΄ν΄λ³΄κ² μ΅λλ€.
1. `keyword.kwlist`λ‘ λͺ¨λ ν€μλ λμ΄νκΈ°
κ°μ₯ κ°λ¨ν κΈ°λ₯μ keyword.kwlist
μ
λλ€. μ΄κ²μ ν¨μκ° μλλΌ νμ¬ Python μΈν°ν리ν°μ μ μλ λͺ¨λ ν€μλμ μνμ€(νΉν λ¬Έμμ΄ λͺ©λ‘)λ₯Ό λ΄κ³ μλ μμ±μ
λλ€. μ΄λ μ§μ€μ κ²°μ μ μΈ μμ²μ
λλ€.
μ¬μ© λ°©λ²:
import keyword
# λͺ¨λ ν€μλ λͺ©λ‘ κ°μ Έμ€κΈ°
all_keywords = keyword.kwlist
print(f"μ΄ Python λ²μ μλ {len(all_keywords)}κ°μ ν€μλκ° μμ΅λλ€.")
print("λͺ©λ‘μ λ€μκ³Ό κ°μ΅λλ€:")
print(all_keywords)
μ΄ μ½λλ₯Ό μ€ννλ©΄ ν€μλμ μμ λͺ©λ‘ μμ²΄κ° μΆλ ₯λ©λλ€. 'False'
, 'None'
, 'True'
, 'and'
, 'as'
, 'assert'
, 'async'
, 'await'
λ±κ³Ό κ°μ λ¨μ΄λ€μ λ³΄κ² λ κ²μ
λλ€. μ΄ λͺ©λ‘μ νΉμ Python λ²μ μ λν μΈμ΄μ μμ½λ μ΄νμ μ€λ
μ·μ
λλ€.
μ΄κ²μ΄ μ μ μ©ν κΉμ? μ΄λ νλ‘κ·Έλ¨μ΄ μΈμ΄μ ꡬ문μ μΈμν μ μλ μκΈ° μ±μ°°μ μΈ λ°©λ²μ μ 곡ν©λλ€. Python μ½λλ₯Ό νμ±, λΆμ λλ μμ±ν΄μΌ νλ λꡬμ λ§€μ° μ μ©ν©λλ€.
2. `keyword.iskeyword()`λ‘ ν€μλ νμΈνκΈ°
μ 체 λͺ©λ‘μ κ°μ§κ³ μλ κ²λ μ’μ§λ§, λ¨μΌ λ¨μ΄κ° ν€μλμΈμ§ νμΈνκΈ° μν΄ λͺ©λ‘μ λ°λ³΅νλ κ²μ λΉν¨μ¨μ μ
λλ€. μ΄ μμ
μ μν΄ λͺ¨λμ κ³ λλ‘ μ΅μ νλ ν¨μ keyword.iskeyword(s)
λ₯Ό μ 곡ν©λλ€.
μ΄ ν¨μλ λ¬Έμμ΄ s
λΌλ νλμ μΈμλ₯Ό μ·¨νλ©°, ν΄λΉ λ¬Έμμ΄μ΄ Python ν€μλμΈ κ²½μ° True
λ₯Ό λ°ννκ³ κ·Έλ μ§ μμΌλ©΄ False
λ₯Ό λ°νν©λλ€. ν΄μ κΈ°λ° μ‘°νλ₯Ό μ¬μ©νκΈ° λλ¬Έμ κ²μ¬ μλκ° λ§€μ° λΉ λ¦
λλ€.
μ¬μ© λ°©λ²:
import keyword
# λͺ κ°μ§ μ μ¬μ ν€μλ νμΈ
print(f"'for'λ ν€μλμ
λλ€: {keyword.iskeyword('for')}")
print(f"'if'λ ν€μλμ
λλ€: {keyword.iskeyword('if')}")
print(f"'True'λ ν€μλμ
λλ€: {keyword.iskeyword('True')}")
# ν€μλκ° μλ λ¨μ΄ νμΈ
print(f"'variable'μ ν€μλμ
λλ€: {keyword.iskeyword('variable')}")
print(f"'true'λ ν€μλμ
λλ€: {keyword.iskeyword('true')}") # λμλ¬Έμ ꡬλΆμ μ μ
print(f"'Print'λ ν€μλμ
λλ€: {keyword.iskeyword('Print')}")
μμ μΆλ ₯:
'for'λ ν€μλμ
λλ€: True
'if'λ ν€μλμ
λλ€: True
'True'λ ν€μλμ
λλ€: True
'variable'μ ν€μλμ
λλ€: False
'true'λ ν€μλμ
λλ€: False
'Print'λ ν€μλμ
λλ€: False
μ΄ μμμμ μ€μν μ μ Python ν€μλλ λμλ¬Έμλ₯Ό ꡬλΆνλ€λ κ²μ
λλ€. True
, False
, None
μ ν€μλμ΄μ§λ§, true
, false
, none
μ ν€μλκ° μλλλ€. keyword.iskeyword()
λ μ΄ μ€μν μΈλΆ μ¬νμ μ ννκ² λ°μν©λλ€.
3. `keyword.issoftkeyword()`λ‘ μννΈ ν€μλ μ΄ν΄νκΈ°
Pythonμ΄ λ°μ ν¨μ λ°λΌ μλ‘μ΄ κΈ°λ₯λ€μ΄ μΆκ°λ©λλ€. κΈ°μ‘΄ μ½λμμ μλ‘μ΄ ν€μλλ₯Ό λ³μ μ΄λ¦μΌλ‘ μ¬μ©νμ μλ μλ μ½λλ₯Ό μμμν€μ§ μκΈ° μν΄ Pythonμ λλλ‘ "μννΈ ν€μλ" λλ "λ§₯λ½ λ―Όκ° ν€μλ"λ₯Ό λμ
ν©λλ€. μ΄λ€μ νΉμ λ§₯λ½μμλ§ ν€μλλ‘ μλνλ λ¨μ΄λ€μ
λλ€. κ°μ₯ λλλ¬μ§ μμλ Python 3.10μμ ꡬ쑰μ ν¨ν΄ λ§€μΉμ μν΄ λμ
λ match
, case
, κ·Έλ¦¬κ³ _
(μμΌλμΉ΄λ)μ
λλ€.
μ΄λ€μ νΉλ³ν μλ³νκΈ° μν΄ Python 3.9λ keyword.issoftkeyword(s)
ν¨μλ₯Ό λμ
νμ΅λλ€.
Python λ²μ μ λν μ°Έκ³ : match
μ case
λ match
λΈλ‘ λ΄μμ ν€μλλ‘ μλνμ§λ§, λ€λ₯Έ κ³³μμλ λ³μλ ν¨μ μ΄λ¦μΌλ‘ μ¬μ ν μ¬μ©λ μ μμ΄ νμ νΈνμ±μ μ μ§ν©λλ€. keyword
λͺ¨λμ μ΄λ¬ν ꡬλΆμ κ΄λ¦¬νλ λ° λμμ μ€λλ€.
μ¬μ© λ°©λ²:
import keyword
import sys
# μ΄ ν¨μλ Python 3.9μμ μΆκ°λμμ΅λλ€
if sys.version_info >= (3, 9):
print(f"'match'λ μννΈ ν€μλμ
λλ€: {keyword.issoftkeyword('match')}")
print(f"'case'λ μννΈ ν€μλμ
λλ€: {keyword.issoftkeyword('case')}")
print(f"'_'λ μννΈ ν€μλμ
λλ€: {keyword.issoftkeyword('_')}")
print(f"'if'λ μννΈ ν€μλμ
λλ€: {keyword.issoftkeyword('if')}")
# μ΅μ Python (3.10+)μμλ μννΈ ν€μλλ μ£Ό kwlistμ ν¬ν¨λ©λλ€
print(f"\n'match'λ iskeyword()μ μν΄ ν€μλλ‘ κ°μ£Όλ©λλ€: {keyword.iskeyword('match')}")
μ΄ λ―Έλ¬ν ꡬλΆμ μ΅μ Python ꡬ문μ μ ννκ² νμ±ν΄μΌ νλ λꡬλ₯Ό ꡬμΆνλ κ°λ°μμκ² μ€μν©λλ€. λλΆλΆμ μΌμμ μΈ μ ν리μΌμ΄μ
κ°λ°μμλ keyword.iskeyword()
λ‘ μΆ©λΆν©λλ€. μ΄λ μλ³μλ‘ νΌν΄μΌ ν λͺ¨λ λ¨μ΄λ₯Ό μ ννκ² μλ³νκΈ° λλ¬Έμ
λλ€.
μ€μ©μ μΈ μμ© λ° μ¬μ© μ¬λ‘
κ·Έλ λ€λ©΄ κ°λ°μλ μ ν€μλλ₯Ό νλ‘κ·Έλλ° λ°©μμΌλ‘ νμΈν΄μΌ ν κΉμ? νΉν μ€κΈ λ° κ³ κΈ λλ©μΈμμ κ·Έ μμ© λΆμΌλ μκ°λ³΄λ€ νν©λλ€.
1. λμ μ½λ μμ± λ° λ©ν νλ‘κ·Έλλ°
λ©ν νλ‘κ·Έλλ°μ λ€λ₯Έ μ½λλ₯Ό μμ±νκ±°λ μ‘°μνλ μ½λλ₯Ό μμ±νλ κΈ°μ μ λλ€. μ΄λ νλ μμν¬, κ°μ²΄-κ΄κ³ν λ§€νΌ(ORM), λ°μ΄ν° μ ν¨μ± κ²μ¬ λΌμ΄λΈλ¬λ¦¬(μ: Pydantic)μμ νν μ¬μ©λ©λλ€.
μλ리μ€: JSON μ€ν€λ§λ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈκ³Ό κ°μ λ°μ΄ν° μμ€λ₯Ό κ°μ Έμ μ΄λ₯Ό λνλ΄λ Python ν΄λμ€λ₯Ό μλμΌλ‘ μμ±νλ λꡬλ₯Ό λ§λ λ€κ³ μμν΄ λ³΄μΈμ. μμ€μ ν€ λλ μ΄ μ΄λ¦μ΄ ν΄λμ€μ μμ±μ΄ λ©λλ€.
λ¬Έμ : λ°μ΄ν°λ² μ΄μ€ μ΄ μ΄λ¦μ΄ 'from'
μ΄κ±°λ JSON ν€κ° 'class'
λΌλ©΄ μ΄λ»κ² λ κΉμ? ν΄λΉ μ΄λ¦μΌλ‘ μμ±μ λ§Ήλͺ©μ μΌλ‘ μμ±νλ©΄ μ ν¨νμ§ μμ Python μ½λκ° μμ±λ κ²μ
λλ€.
ν΄κ²°μ±
: keyword
λͺ¨λμ λΉμ μ μμ λ§μ
λλ€. μμ±μ μμ±νκΈ° μ μ μ΄λ¦μ΄ ν€μλμΈμ§ νμΈν©λλ€. ν€μλλΌλ©΄ λ°μ€μ μΆκ°νλ λ± μ΄λ¦μ μ μ ν μ μμ΅λλ€. μ΄λ Pythonμμ νν μ¬μ©λλ κ΄λ‘μ
λλ€.
μμ μ μ ν¨μ:
import keyword
def sanitize_identifier(name):
"""λ¬Έμμ΄μ΄ μ ν¨ν Python μλ³μμ΄λ©° ν€μλκ° μλμ§ νμΈν©λλ€."""
if keyword.iskeyword(name):
return f"{name}_"
# μμ ν ꡬνμ str.isidentifier()λ νμΈν κ²μ
λλ€
return name
# μ¬μ© μμ:
fields = ["name", "id", "from", "import", "data"]
print("ν΄λμ€ μμ± μμ± μ€...")
for field in fields:
sanitized_field = sanitize_identifier(field)
print(f" self.{sanitized_field} = ...")
μΆλ ₯:
ν΄λμ€ μμ± μμ± μ€...
self.name = ...
self.id = ...
self.from_ = ...
self.import_ = ...
self.data = ...
μ΄ κ°λ¨ν νμΈμ μμ±λ μ½λμμ μΉλͺ μ μΈ κ΅¬λ¬Έ μ€λ₯λ₯Ό λ°©μ§νμ¬ λ©ν νλ‘κ·Έλλ° λꡬλ₯Ό κ²¬κ³ νκ³ μ λ’°ν μ μκ² λ§λλλ€.
2. λλ©μΈ νΉμ μΈμ΄(DSL) μμ±
λλ©μΈ νΉμ μΈμ΄(DSL)λ νΉμ μμ μ μν΄ μμ±λ λ―Έλ μΈμ΄λ‘, μ’ μ’ Pythonκ³Ό κ°μ λ²μ© μΈμ΄ μμ ꡬμΆλ©λλ€. λ°μ΄ν°λ² μ΄μ€μ© `SQLAlchemy` λλ λ°μ΄ν° μκ°νμ© `Plotly`μ κ°μ λΌμ΄λΈλ¬λ¦¬λ ν΄λΉ λλ©μΈμ λν DSLμ ν¨κ³Όμ μΌλ‘ μ 곡ν©λλ€.
DSLμ μ€κ³ν λ, κ³ μ ν λͺ
λ Ή μ§ν©κ³Ό ꡬ문μ μ μν΄μΌ ν©λλ€. keyword
λͺ¨λμ DSLμ μ΄νκ° Python μ체μ μμ½μ΄μ μΆ©λνμ§ μλλ‘ λ³΄μ₯νλ λ° νμμ μ
λλ€. keyword.kwlist
λ₯Ό νμΈν¨μΌλ‘μ¨ λͺ¨νΈμ±κ³Ό μ μ¬μ μΈ νμ± μΆ©λμ νΌνλλ‘ λμμΈμ μλ΄ν μ μμ΅λλ€.
3. κ΅μ‘ λꡬ, λ¦°ν° λ° IDE ꡬμΆ
Python κ°λ° λꡬμ μ 체 μνκ³λ Pythonμ ꡬ문μ μ΄ν΄νλ λ° μμ‘΄ν©λλ€.
- λ¦°ν° (μ: Pylint, Flake8): μ΄ λꡬλ€μ μ½λμ μ€λ₯ λ° μ€νμΌ λ¬Έμ λ₯Ό μ μ μΌλ‘ λΆμν©λλ€. 첫 λ¨κ³λ μ½λλ₯Ό νμ±νλ κ²μΈλ°, μ΄λ₯Ό μν΄μλ ν€μλκ° λ¬΄μμ΄κ³ μλ³μκ° λ¬΄μμΈμ§ μμμΌ ν©λλ€.
- IDE (μ: VS Code, PyCharm): νΈμ§κΈ°μ ꡬ문 κ°μ‘°λ ν€μλλ₯Ό λ³μ, λ¬Έμμ΄ λ° μ£Όμκ³Ό ꡬλ³ν μ μκΈ° λλ¬Έμ μλν©λλ€.
def
,if
,return
μ λ€λ₯Έ μμΌλ‘ νμνλ κ²μ μ΄λ€μ΄ ν€μλμμ μκΈ° λλ¬Έμ λλ€. μ΄λ¬ν μ§μμkeyword
λͺ¨λμ΄ μ 곡νλ κ²κ³Ό λμΌν λͺ©λ‘μμ λμ΅λλ€. - κ΅μ‘ νλ«νΌ: λνν μ½λ© νν 리μΌμ μ€μκ° νΌλλ°±μ μ 곡ν΄μΌ ν©λλ€. νμμ΄
else
λ₯Ό λ³μ μ΄λ¦μΌλ‘ μ¬μ©νλ €κ³ ν λ, νλ«νΌμkeyword.iskeyword('else')
λ₯Ό μ¬μ©νμ¬ μ€λ₯λ₯Ό κ°μ§νκ³ "'else'λ Pythonμ μμ½λ ν€μλμ΄λ―λ‘ λ³μ μ΄λ¦μΌλ‘ μ¬μ©ν μ μμ΅λλ€."μ κ°μ μ μ©ν λ©μμ§λ₯Ό μ 곡ν μ μμ΅λλ€.
4. μλ³μμ λν μ¬μ©μ μ λ ₯ μ ν¨μ± κ²μ¬
μΌλΆ μ ν리μΌμ΄μ
μ μ¬μ©μκ° λμ€μ νλ‘κ·Έλλ° μλ³μκ° λ μ μλ μν°ν° μ΄λ¦μ μ§μ νλλ‘ νμ©ν©λλ€. μλ₯Ό λ€μ΄, λ°μ΄ν° κ³Όν νλ«νΌμ μ¬μ©μκ° λ°μ΄ν°μΈνΈμ κ³μ°λ μ΄ μ΄λ¦μ μ§μ νλλ‘ νμ©ν μ μμ΅λλ€. μ΄ μ΄λ¦μ μμ± μ κ·Ό(μ: dataframe.my_new_column
)μ ν΅ν΄ μ΄μ μ κ·Όνλ λ° μ¬μ©λ μ μμ΅λλ€.
μ¬μ©μκ° 'yield'
μ κ°μ μ΄λ¦μ μ
λ ₯νλ©΄ λ°±μλ μμ€ν
μ΄ μμλ μ μμ΅λλ€. μ
λ ₯ λ¨κ³μμ keyword.iskeyword()
λ₯Ό μ¬μ©νλ κ°λ¨ν μ ν¨μ± κ²μ¬ λ¨κ³λ μ΄λ₯Ό μμ ν λ°©μ§νμ¬ λ λμ μ¬μ©μ κ²½νκ³Ό λ μμ μ μΈ μμ€ν
μ μ 곡ν μ μμ΅λλ€.
μμ μ λ ₯ μ ν¨μ± κ²μ¬κΈ°:
import keyword
def is_valid_column_name(name):
"""μ¬μ©μκ° μ 곡ν μ΄λ¦μ΄ μ ν¨ν μλ³μμΈμ§ νμΈν©λλ€."""
if not isinstance(name, str) or not name.isidentifier():
print(f"Error: '{name}'μ(λ) μ ν¨ν μλ³μ νμμ΄ μλλλ€.")
return False
if keyword.iskeyword(name):
print(f"Error: '{name}'μ(λ) μμ½λ Python ν€μλμ΄λ©° μ¬μ©ν μ μμ΅λλ€.")
return False
return True
print(is_valid_column_name("sales_total")) # True
print(is_valid_column_name("2023_sales")) # False (μ«μλ‘ μμ)
print(is_valid_column_name("for")) # False (ν€μλμ)
Python λ²μ λ³ ν€μλ: μ§νμ λν μ°Έκ³
Python μΈμ΄λ μ μ μ΄μ§ μκ³ μ§νν©λλ€. μλ‘μ΄ λ²μ κ³Ό ν¨κ» μλ‘μ΄ κΈ°λ₯κ³Ό λλ‘λ μλ‘μ΄ ν€μλκ° λμ
λ©λλ€. keyword
λͺ¨λμ μλ¦λ€μμ μΈμ΄μ ν¨κ» μ§ννλ€λ μ μ
λλ€. μ»κ² λλ ν€μλ λͺ©λ‘μ νμ μ¬μ© μ€μΈ μΈν°ν리ν°μ λ°λΌ λ¬λΌμ§λλ€.
- Python 2μμ 3μΌλ‘: κ°μ₯ μ λͺ
ν λ³κ²½ μ¬ν μ€ νλλ
print
μexec
μμ΅λλ€. Python 2μμλ λͺ λ Ήλ¬Έμ ν€μλμμ΅λλ€. Python 3μμλ λ΄μ₯ ν¨μκ° λμ΄keyword.kwlist
μμ μ κ±°λμμ΅λλ€. - Python 3.5 μ΄μ: λΉλκΈ° νλ‘κ·Έλλ° λμ
μΌλ‘
async
μawait
κ° μΆκ°λμμ΅λλ€. μ²μμλ λ§₯λ½μ λ°λΌ λ¬λΌμ§λ ν€μλμμ§λ§, Python 3.7λΆν°λ μ μ(κ³ μ ) ν€μλκ° λμμ΅λλ€. - Python 3.10: ꡬ쑰μ ν¨ν΄ λ§€μΉ κΈ°λ₯μΌλ‘
match
μcase
κ° λ§₯λ½μ λ°λΌ λ¬λΌμ§λ ν€μλλ‘ μΆκ°λμμ΅λλ€.
μ΄λ keyword
λͺ¨λμ μμ‘΄νλ μ½λκ° λ³Έμ§μ μΌλ‘ μ΄μμ±μ΄ μκ³ μ λ°© νΈνμ±μ΄ μμμ μλ―Έν©λλ€. Python 3.11λ‘ μμ±λ μ½λ μμ±κΈ°λ match
λ₯Ό μλμΌλ‘ νΌνλ λ°©λ²μ μκ² λ κ²μ
λλ€. μ΄λ Python 3.8μμ μ€νλμλ€λ©΄ μμ§ λͺ»νμ κ²μ
λλ€. μ΄λ¬ν λμ μΈ νΉμ±μ λͺ¨λμ κ°μ₯ κ°λ ₯νλ©΄μλ μ νκ°λ κΈ°λ₯ μ€ νλμ
λλ€.
λͺ¨λ² μ¬λ‘ λ° νν ν¨μ
keyword
λͺ¨λμ κ°λ¨νμ§λ§, λ°λΌμΌ ν λͺ κ°μ§ λͺ¨λ² μ¬λ‘μ νΌν΄μΌ ν ν¨μ λ€μ΄ μμ΅λλ€.
κΆμ₯: μ ν¨μ± κ²μ¬μ `keyword.iskeyword()` μ¬μ©
νλ‘κ·Έλλ° λ°©μμ μλ³μ μμ± λλ μ ν¨μ± κ²μ¬μ κ΄λ ¨λ λͺ¨λ μλ리μ€μμ μ΄ ν¨μλ μ ν¨μ± κ²μ¬ λ‘μ§μ μΌλΆκ° λμ΄μΌ ν©λλ€. λΉ λ₯΄κ³ μ ννλ©°, μ΄ κ²μ¬λ₯Ό μννλ κ°μ₯ νμ΄μ¬λ€μ΄ λ°©λ²μ λλ€.
λΉκΆμ₯: `keyword.kwlist` μμ
keyword.kwlist
λ μΌλ°μ μΈ Python 리μ€νΈμ΄λ―λ‘ λ°νμμ κΈ°μ μ μΌλ‘ μμ ν μ μμ΅λλ€ (μ: keyword.kwlist.append("my_keyword")
). μ λ μ΄λ κ² νμ§ λ§μΈμ. 리μ€νΈλ₯Ό μμ ν΄λ Python νμ μ체μλ μλ¬΄λ° μν₯μ λ―ΈμΉμ§ μμ΅λλ€. νμμ ν€μλ μ§μμ νλμ½λ©λμ΄ μμ΅λλ€. 리μ€νΈλ₯Ό λ³κ²½νλ κ²μ keyword
λͺ¨λμ μΈμ€ν΄μ€λ₯Ό μΈμ΄μ μ€μ ꡬ문과 μΌμΉνμ§ μκ² λ§λ€μ΄ νΌλμ€λ½κ³ μμΈ‘ λΆκ°λ₯ν λ²κ·Έλ‘ μ΄μ΄μ§ λΏμ
λλ€. μ΄ λͺ¨λμ κ²μ¬λ₯Ό μν κ²μ΄μ§, μμ μ μν κ²μ΄ μλλλ€.
κΆμ₯: λμλ¬Έμ κ΅¬λΆ κΈ°μ΅
ν€μλλ λμλ¬Έμλ₯Ό ꡬλΆνλ€λ κ²μ νμ κΈ°μ΅νμΈμ. μ¬μ©μ μ
λ ₯μ μ ν¨μ± κ²μ¬ν λ, iskeyword()
λ‘ νμΈνκΈ° μ μ μ΄λ€ λμλ¬Έμ λ³ν(μ: μλ¬Έμλ‘ λ³ν)λ νμ§ μλλ‘ μ£Όμν΄μΌ ν©λλ€. κ·Έλ κ² νλ©΄ 'True'
, 'False'
, 'None'
μ λν΄ μλͺ»λ κ²°κ³Όλ₯Ό μ»κ² λ κ²μ
λλ€.
λΉκΆμ₯: ν€μλλ₯Ό λ΄μ₯ ν¨μμ νΌλ
list
λ str
κ³Ό κ°μ λ΄μ₯ ν¨μ μ΄λ¦μ κ°λ¦¬λ κ²λ μ’μ§ μμ κ΄νμ΄μ§λ§, keyword
λͺ¨λμ μ΄λ₯Ό κ°μ§νλ λ° λμμ΄ λμ§ μμ΅λλ€. μ΄λ μΌλ°μ μΌλ‘ λ¦°ν°κ° μ²λ¦¬νλ λ€λ₯Έ μ’
λ₯μ λ¬Έμ μ
λλ€. keyword
λͺ¨λμ SyntaxError
λ₯Ό μ λ°νλ μμ½μ΄μλ§ ν΄λΉλ©λλ€.
κ²°λ‘ : Pythonμ κ΅¬μ± μμλ₯Ό λ§μ€ν°νκΈ°
keyword
λͺ¨λμ `asyncio`λ§νΌ νλ €νκ±°λ `multiprocessing`λ§νΌ 볡μ‘νμ§λ μμ§λ§, λͺ¨λ μ§μ§ν Python κ°λ°μμκ²λ νμμ μΈ λꡬμ
λλ€. μ΄λ Python ꡬ문μ ν΅μ¬μΈ μμ½μ΄μ λν κΉλνκ³ μμ μ μ΄λ©° λ²μ μΈμμ μΈ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€.
keyword.kwlist
μ keyword.iskeyword()
λ₯Ό λ§μ€ν°ν¨μΌλ‘μ¨, λ κ°λ ₯νκ³ μ§λ₯μ μ΄λ©° μ€λ₯ μλ μ½λλ₯Ό μμ±ν μ μλ λ₯λ ₯μ μ»κ² λ©λλ€. κ°λ ₯ν λ©ν νλ‘κ·Έλλ° λꡬλ₯Ό ꡬμΆνκ³ , λ μμ ν μ¬μ©μ λλ©΄ μ ν리μΌμ΄μ
μ λ§λ€κ³ , Python μΈμ΄μ μ°μν ꡬ쑰μ λν΄ λ κΉμ΄ μ΄ν΄ν μ μμ΅λλ€. λ€μμ μλ³μλ₯Ό μ ν¨μ± κ²μ¬νκ±°λ μ½λ μ‘°κ°μ μμ±ν΄μΌ ν λ, μ΄λ€ λꡬλ₯Ό μ¬μ©ν΄μΌ ν μ§ μ νν μκ² λμ΄ Pythonμ κ²¬κ³ ν κΈ°λ° μμ μμ κ°μ κ°μ§κ³ ꡬμΆν μ μμ κ²μ
λλ€.