[Python] λͺ¨λ“ˆ

Jungmin SeoΒ·2021λ…„ 5μ›” 25일
0

πŸ” λͺ¨λ“ˆ

  • ν•¨μˆ˜λ‚˜ λ³€μˆ˜ λ˜λŠ” 클래슀λ₯Ό λͺ¨μ•„ 놓은 파일
  • λ‹€λ₯Έ 파이썬 ν”„λ‘œκ·Έλž¨μ—μ„œ λΆˆλŸ¬μ™€ μ‚¬μš©ν•  수 μžˆκ²Œλ” λ§Œλ“  파이썬 파일

1. λͺ¨λ“ˆ λ§Œλ“€κΈ°

# mod1.py
def add(a, b):
    return a + b

def sub(a, b): 
    return a-b
  • add, sub ν•¨μˆ˜κ°€ μžˆλŠ” mod1.py νŒŒμΌμ„ ν˜„ 디렉터리에 μ €μž₯
  • mod1.pyκ°€ λͺ¨λ“ˆ (** 파이썬 ν™•μž₯자 .py둜 λ§Œλ“  파이썬 νŒŒμΌμ€ λͺ¨λ‘ λͺ¨λ“ˆ)

2. λͺ¨λ“ˆ 뢈러였기

import λͺ¨λ“ˆ

>>> import mod1    # import mod1.py둜 μž…λ ₯ν•˜μ§€ μ•Šλ„λ‘ 주의
>>> print(mod1.add(3, 4))    # λͺ¨λ“ˆλͺ….ν•¨μˆ˜λͺ…
7

from λͺ¨λ“ˆ import ν•¨μˆ˜

>>> from mod1 import add    # from λͺ¨λ“ˆλͺ… import ν•¨μˆ˜λͺ…
>>> add(3, 4)    # μ“Έλ•Œλ§ˆλ‹€ λͺ¨λ“ˆλͺ…을 μ“°μ§€ μ•Šμ•„λ„ 됨
7

λ‘κ°œ μ΄μƒμ˜ ν•¨μˆ˜ 호좜 + λͺ¨λ“ˆλͺ… 없이 μ‚¬μš©

>>> from mod1 import add, sub    # from λͺ¨λ“ˆλͺ… import ν•¨μˆ˜λͺ…1, ν•¨μˆ˜λͺ…2, ...
>>> add(3, 4)
7
>>> from mod1 import *    # *λŠ” 'λͺ¨λ“  것'μ΄λΌλŠ” 뜻 -> λͺ¨λ“ˆ λ‚΄ λͺ¨λ“  ν•¨μˆ˜ 뢈러였기
>>> add(3, 4)
7

3. if __name__ == "__main__"

πŸ• importκ°€ μ•„λ‹Œ, νŒŒμΌμ„ 직접 μ‹€ν–‰ν•  λ•Œλ§Œ μˆ˜ν–‰ν•˜κ³  싢은 λ‚΄μš©μ„ μœ„ν•΄

# mod1.py 
def add(a, b): 
    return a+b

def sub(a, b): 
    return a-b

print(add(1, 4))
print(sub(4, 2))
# νŒŒμΌμ„ 직접 μ‹€ν–‰ν•  경우
C:\doit>python mod1.py
5
2

# λͺ¨λ“ˆλ‘œ importν•  경우
>>> import mod1
5
2
  • λͺ¨λ“ˆ λ‚΄ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λͺ¨λ“ˆμ„ importν–ˆλŠ”λ°, 파일이 μ‹€ν–‰λ˜μ–΄ 결괏값을 좜λ ₯해버림

πŸ• if __name__ == "__main__"

직접 파일 μ‹€ν–‰ μ‹œ if절이 참이 λ˜μ–΄, if μ΄ν•˜ μˆ˜ν–‰
λͺ¨λ“ˆμ„ λΆˆλŸ¬μ„œ μ‚¬μš© μ‹œ if절이 거짓이 λ˜μ–΄, if μ΄ν•˜ μˆ˜ν–‰ν•˜μ§€ μ•ŠμŒ

# mod1.py 
def add(a, b): 
    return a+b

def sub(a, b): 
    return a-b

if __name__ == "__main__":
    print(add(1, 4))
    print(sub(4, 2))

# λͺ¨λ“ˆλ‘œ importν•  경우
>>> import mod1    
>>>                      # if μ΄ν•˜ μˆ˜ν–‰λ˜μ§€ μ•ŠμŒ

πŸ” __name__ λ³€μˆ˜

  • 파이썬 λ‚΄λΆ€μ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” νŠΉλ³„ν•œ λ³€μˆ˜ 이름
  • mod1.py νŒŒμΌμ„ 직접 μ‹€ν–‰ν•  경우, __name__ λ³€μˆ˜μ—λŠ” __main__값이 μ €μž₯됨
  • mod1을 import ν•  경우, mod1.py의 __name__ λ³€μˆ˜μ—λŠ” mod1이 μ €μž₯됨.

4. λ‹€λ₯Έ νŒŒμΌμ—μ„œ λͺ¨λ“ˆ 뢈러였기

πŸ• λ‹€λ₯Έ νŒŒμΌμ—μ„œ λͺ¨λ“ˆ 뢈러였기 (feat. 같은 디렉터리)

# modtest.py
import mod2
result = mod2.add(3, 4)
print(result)

πŸ• λ‹€λ₯Έ 디렉터리에 μžˆλŠ” λͺ¨λ“ˆ 뢈러였기

  1. sys.path.append(λͺ¨λ“ˆμ„ μ €μž₯ν•œ 디렉터리)
C:\doit>python
>>> import sys

# 파이썬 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λ˜μ–΄μžˆλŠ” 디렉터리 λ¦¬μŠ€νŠΈμ— ν•΄λ‹Ή 디렉터리 μΆ”κ°€
>>> sys.path.append("C:/doit/mymod")    

# 뢈러울 λͺ¨λ“ˆμ΄ μžˆλŠ” 디렉터리 μΆ”κ°€ μ™„λ£Œ
>>> sys.path
['', 'C:\\Windows\\SYSTEM32\\python37.zip', 'c:\\Python37\\DLLs', 
'c:\\Python37\\lib', 'c:\\Python37', 'c:\\Python37\\lib\\site-packages', 
'C:/doit/mymod']

>>> import mod2
>>> print(mod2.add(3,4))
7
  1. PYTHONPATH ν™˜κ²½ λ³€μˆ˜ μ‚¬μš©ν•˜κΈ°
C:\doit>set PYTHONPATH=C:\doit\mymod    # set PYTHONPATH둜 ν™˜κ²½λ³€μˆ˜μ— 디렉터리 μ„€μ •   
C:\doit>python
>>> import mod2    # λ³„λ„μ˜ 디렉터리 이동 없이 λͺ¨λ“ˆ 뢈러였기 κ°€λŠ₯
>>> print(mod2.add(3,4))
7



μ•„λž˜ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μ •λ¦¬ν•œ 것이닀.

μ ν”„νˆ¬νŒŒμ΄μ¬ (https://wikidocs.net/29)

profile
Hello World!

0개의 λŒ“κΈ€