Development/Python

python_re_study...4

Kirok Kim 2021. 12. 18. 17:13
  •  __init__.py의 μš©λ„
  • __init__.py νŒŒμΌμ€ ν•΄λ‹Ή 디렉터리가 νŒ¨ν‚€μ§€μ˜ μΌλΆ€μž„μ„ μ•Œλ €μ£ΌλŠ” 역할을 ν•œλ‹€. λ§Œμ•½ game, sound, graphic λ“± νŒ¨ν‚€μ§€μ— ν¬ν•¨λœ 디렉터리에 __init__.py νŒŒμΌμ΄ μ—†λ‹€λ©΄ νŒ¨ν‚€μ§€λ‘œ μΈμ‹λ˜μ§€ μ•ŠλŠ”λ‹€.
  • μ΄λ ‡κ²Œ νŠΉμ • λ””λ ‰ν„°λ¦¬μ˜ λͺ¨λ“ˆμ„ ***** μ‚¬μš©ν•˜μ—¬ importν•  λ•Œμ—λŠ” λ‹€μŒκ³Ό 같이 ν•΄λ‹Ή λ””λ ‰ν„°λ¦¬μ˜ __init__.py νŒŒμΌμ— __all__ λ³€μˆ˜λ₯Ό μ„€μ •ν•˜κ³  importν•  수 μžˆλŠ” λͺ¨λ“ˆμ„ μ •μ˜ν•΄ μ£Όμ–΄μ•Ό ν•œλ‹€.
# C:/doit/game/sound/__init__.py
__all__ = ['echo']
  • [ ] relative νŒ¨ν‚€μ§€
from ..sound.echo import echo_test
=from game.sound.echo import echo_test
def render_test():
    print("render")
    echo_test()
  • μ˜ˆμ™Έμ²˜λ¦¬
try:
...
except:
...
  • try:
    ...
    except λ°œμƒ 였λ₯˜:
    ...
    
    try:
    ...
    except λ°œμƒ 였λ₯˜ as 였λ₯˜ λ©”μ‹œμ§€ λ³€μˆ˜:
    ...
    
    try:
    	4/0
    except ZeroDivisionError as e:
    	print(e)
    
    f=open('foo.txt','w')
    try:
    	~
    finally:
    	f.close()
    
    try:
    	...
    except λ°œμƒ 였λ₯˜ 1 :
    	...
    except λ°œμƒ 였λ₯˜ 2 :
    	...
    
    try:
        a = [1,2]
        print(a[3])
        4/0
    except (ZeroDivisionError, IndexError) as e:
        print(e)
    
    • [ ] try문에 else절 μ‚¬μš©ν•˜κΈ°
    try:
        ...
    except [λ°œμƒ 였λ₯˜[as 였λ₯˜ λ©”μ‹œμ§€ λ³€μˆ˜]]:
        ...
    else:  # 였λ₯˜κ°€ 없을 κ²½μš°μ—λ§Œ μˆ˜ν–‰λœλ‹€.
        ...
    
    try:
        age=int(input('λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš”: '))
    except:
        print('μž…λ ₯이 μ •ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.')
    else:
        if age <= 18:
            print('λ―Έμ„±λ…„μžλŠ” μΆœμž…κΈˆμ§€μž…λ‹ˆλ‹€.')
        else:
            print('ν™˜μ˜ν•©λ‹ˆλ‹€.')
    
    • [ ] λ°˜λ“œμ‹œ κ΅¬ν˜„ν•˜λ„λ‘ ν•˜κ²Œλ” ν•˜λ €λ©΄
    class Bird:
        def fly(self):
            raise NotImplementedError
    
    • μœ„ 처럼 raiseλ₯Ό μž‘μ„±ν•œλ‹€.
    • [ ] μ˜ˆμ™Έ λ§Œλ“€κΈ°
    • class MyError(Exception):
      	pass
      #파이썬 λ‚΄μž₯ 클래슀인 Exceptionλ₯Ό μƒμ†ν•˜μ—¬ λ§Œλ“¦!
      
      def say_nick(nick):
          if nick == '바보':
              raise MyError()
          print(nick)
      
      #바보일 경우 errorλ°œμƒ
      #μ˜ˆμ™Έ μ²˜λ¦¬ν•  경우
      try:
      	say_nick("μ²œμ‚¬")
      	say_nick("바보")
      except MyError:
      	print("ν—ˆμš©λ˜μ§€ μ•ŠλŠ” 별λͺ…μž…λ‹ˆλ‹€.")
      
      >>>
      μ²œμ‚¬
      ν—ˆμš©λ˜μ§€ μ•ŠλŠ” 별λͺ…μž…λ‹ˆλ‹€.
      >>>
      
      try:
      	say_nick("μ²œμ‚¬")
      	say_nick("바보")
      except MyError as e:
      	print(e)
      >>> #κ²°κ³ΌλŠ” 좜λ ₯λ˜μ§€ μ•ŠλŠ”λ‹€
      #좜λ ₯을 ν•˜κ³  싢을 κ²½μš°μ—λŠ” __str__λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•΄μ•Όν•œλ‹€.
      class MyError(Exception):
          def __str__(self):
              return "ν—ˆμš©λ˜μ§€ μ•ŠλŠ” 별λͺ…μž…λ‹ˆλ‹€."
      

μ°Έκ³  : https://wikidocs.net/30

 

05-4 μ˜ˆμ™Έ 처리

ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€λ‹€ 보면 μˆ˜μ—†μ΄ λ§Žμ€ 였λ₯˜λ₯Ό λ§Œλ‚˜κ²Œ λœλ‹€. λ¬Όλ‘  였λ₯˜κ°€ λ°œμƒν•˜λŠ” μ΄μœ λŠ” ν”„λ‘œκ·Έλž¨μ΄ 잘λͺ» λ™μž‘ν•˜λŠ” 것을 막기 μœ„ν•œ 파이썬의 배렀이닀. ν•˜μ§€λ§Œ λ•Œλ•Œλ‘œ μ΄λŸ¬ν•œ 였λ₯˜ ...

wikidocs.net

 

λ°˜μ‘ν˜•