• πŸ’»Python:: Module

    2024. 1. 25.

    by. @leeeun

    πŸ“‚Module (λͺ¨λ“ˆ)

    λͺ¨λ“ˆ: ν•¨μˆ˜λ‚˜ λ³€μˆ˜ λ˜λŠ” 클래슀λ₯Ό λͺ¨μ•„놓은 파이썬 파일
    λ‹€λ₯Έ μ‚¬λžŒμ΄ μž‘μ„±ν•œ ν•¨μˆ˜ 등을 λŒμ–΄μ™€μ„œ ν™œμš©ν•˜κ³  싢을 λ–„
    ν™•μž₯자 .py

     

    πŸ“Œλͺ¨λ“ˆ μƒμ„±ν•˜κΈ°

    ν™•μž₯μžκ°€.py인 파일 생성-> λ„£κ³ μž ν•˜λŠ” ν•¨μˆ˜λ₯Ό 포함

     

    πŸ“Œλͺ¨λ“ˆ 뢈러였기

    기본ꡬ쑰:
    import λͺ¨λ“ˆμ΄λ¦„ #λͺ¨λ“ˆ 뢈러옴

    • module.py νŒŒμΌμ„ 뢈러올 λ•ŒλŠ” κ·Έ λͺ¨λ“ˆμ΄ μ €μž₯λ˜μ–΄ μžˆλŠ” λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•œ λ‹€μŒ 진행(importλŠ” ν˜„μž¬ 디렉터리에 μžˆλŠ” 파일 ν˜Ήμ€ 파이썬 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ €μž₯된 디렉터리에 μžˆλŠ” λͺ¨λ“ˆλ§Œ 뢈러올 수 있음.)
    • λͺ¨λ“ˆ 자체λ₯Ό λΆˆλŸ¬μ™”μ„ λ•Œμ—λŠ” <λͺ¨λ“ˆμ΄λ¦„.λͺ¨λ“ˆμ˜ν•¨μˆ˜μ΄λ¦„> ν˜•νƒœλ‘œ λͺ¨λ“ˆ μ•ˆμ˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 있음.

    from λͺ¨λ“ˆμ΄λ¦„ import ν•¨μˆ˜μ΄λ¦„
    :μ‚¬μš© μ›ν•˜λŠ” ν•¨μˆ˜λ§Œ ν•΄λ‹Ή λͺ¨λ“ˆμ—μ„œ 뢈러옴

    • <λͺ¨λ“ˆμ΄λ¦„.λͺ¨λ“ˆν•¨μˆ˜>ν˜•νƒœκ°€ μ•„λ‹Œ λͺ¨λ“ˆ 이름을 뢙이지 μ•Šκ³  λ°”λ‘œ λͺ¨λ“ˆμ˜ ν•¨μˆ˜λ₯Ό μ“Έ 수 있음.

    from λͺ¨λ“ˆμ΄λ¦„ import *
    : * λ¬ΈμžλŠ” 'λͺ¨λ“ κ²ƒ'μ΄λΌλŠ” μ˜λ―Έμ΄λ‹€. λͺ¨λ“ˆμ˜ λͺ¨λ“  ν•¨μˆ˜λ₯Ό λΆˆλŸ¬μ™€μ„œ μ‚¬μš©ν•˜κ² λ‹€λŠ” 뜻

     

    경둜 μ„€μ •ν•˜μ—¬ λͺ¨λ“ˆ 뢈러였기

     

    λͺ¨λ“ˆμ„ μ €μž₯ν•œ λ””λ ‰ν„°λ¦¬λ‘œ μ΄λ™ν•˜μ§€ μ•Šκ³ λ„ λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜€λŠ” 방법
    (1) sys.path.append μ‚¬μš©

    sys.path.append μ‚¬μš©

    import sys #sys module μ‚¬μš©
    sys.path # 파이썬 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” 디렉터리 확인 -> 리슀트 type 
    sys.path.append("λͺ¨λ“ˆμ˜ μ €μž₯경둜")
    #파이썬 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ„€μΉ˜λ˜μ–΄ μžˆλŠ” 디렉터리에 λͺ¨λ“ˆμ΄ μ €μž₯된 디렉터리λ₯Ό append둜 μΆ”κ°€

    (2)PYTHONPATH ν™˜κ²½λ³€μˆ˜ μ‚¬μš©
    set PYTHONPATH="λͺ¨λ“ˆ 파일이 μžˆλŠ” 디렉터리 경둜"
    λ§₯, μœ λ‹‰μŠ€ ν™˜κ²½μ—μ„œλŠ” set λŒ€μ‹  export

     

    if _name_=="__main__": 의 의미

    • 직접 λͺ¨λ“ˆμ˜ νŒŒμΌμ„ μ‹€ν–‰ν–ˆμ„ λ•Œ if문의 쑰건이 참이 λ˜μ–΄μ„œ λ¬Έμž₯을 μˆ˜ν–‰
      λŒ€ν™”ν˜• μΈν„°ν”„λ¦¬ν„°μ—μ„œ λͺ¨λ“ˆμ„ 뢈러 μ‚¬μš©ν•  λ•Œ if문이 거짓이 λ˜μ–΄ λ¬Έμž₯ μˆ˜ν–‰x
    • λͺ¨λ“ˆμ„ import ν–ˆμ„ λ•Œ κ·Έ λͺ¨λ“ˆμ•ˆμ— μžˆλŠ” λͺ¨λ“  μ½”λ“œλ“€μ΄ κ·ΈλŒ€λ‘œ μ‹€ν–‰λ˜λŠ” 것을 막기 μœ„ν•΄ μ‚¬μš©__name λ³€μˆ˜: 파이썬의 λ‚΄μž₯λ³€μˆ˜, μ›λž˜λΆ€ν„° νŒŒμ΄μ¬μ—μ„œ μ •ν•œ '이미 μžˆλŠ”' λ³€μˆ˜
      ν•΄λ‹Ή 파이썬 파일의 이름 즉, λͺ¨λ“ˆμ˜ 이름(예: function1.py이면 function1)을 λ‹΄κ²Œ 됨.
      but κ·Έ 파일 μ•ˆμ—μ„œ ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚€λ©΄ nameλ³€μˆ˜μ— λ‹΄κΈ°λŠ” 것은 κ·Έ λͺ¨λ“ˆμ˜ 이름이 μ•„λ‹ˆκ³  __main
      μ΄λΌλŠ” 값이 λ˜λ„λ‘ μ„€μ •.
      κ·Έ 파일 μ•ˆμ—μ„œ κ·Έ ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” 것이 μ•„λ‹ˆλΌ μƒˆλ‘œμš΄ 파일(import_function1.py)μ—μ„œ function1.pyλΌλŠ” λͺ¨λ“ˆμ„ importν•΄μ„œ 가지고 μ™€μ„œ μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” __name__λ³€μˆ˜μ— κ·Έ λͺ¨λ“ˆμ˜ 이름이 λ‹΄κΈ΄λ‹€.
    #mod.py λͺ¨λ“ˆ 파일
    def add(a,b):
    	return a+b
    
    if __name__=="__main__":
    	print(add(1,4))
    
    λͺ¨λ“ˆμ„ 직접 μ‹€ν–‰ν•˜λ©΄ 5 좜λ ₯, λͺ¨λ“ˆμ„ λΆˆλŸ¬μ„œ μ‚¬μš©ν•  λ•ŒλŠ” 5 좜λ ₯x

     

    πŸ“Œ 클래슀, λ³€μˆ˜ 등을 ν¬ν•¨ν•œ λͺ¨λ“ˆ

    λ³€μˆ˜μ˜ μ‚¬μš©: λͺ¨λ“ˆμ΄λ¦„.λ³€μˆ˜μ΄λ¦„
    클래슀의 μ‚¬μš© λͺ¨λ“ˆμ΄λ¦„.ν΄λž˜μŠ€μ΄λ¦„()

    #mod.py
    PI=3.14
    class Math:
    	def solv(self,r):
        	return PI*(r**2)
    #λͺ¨λ“ˆ 뢈러였기
    import mod #.pyλŠ” 뢙이지 μ•ŠλŠ”λ‹€.
    print(mod.PI) #3.14 좜λ ₯됨.
    a=mod.Math() #aλ₯Ό math class의 μΈμŠ€ν„΄μŠ€λ‘œ
    a.solve(2) #3.14에 4λ₯Ό κ³±ν•œ κ°’ 좜λ ₯됨.

     

    μ£Όμš” λͺ¨λ“ˆ

    math : μˆ˜ν•™ 계산 κΈ°λŠ₯ 제곡
    pow(x,y) return x**y
    isqrt(x) return x의 제곱근
    random : python을 톡해 λ‚œμˆ˜(random number) 생성
    turtle : κ°„λ‹¨ν•œ κ·Έλ¦Ό 생성 κ°€λŠ₯

    λŒ“κΈ€