🀭 당신이 μ‹€μˆ˜ν•˜λŠ” Python ν”„λ‘œκ·Έλž˜λ° 5가지

μŠΉμ€€Β·2021λ…„ 4μ›” 10일
0

Jack of Some μœ νˆ¬λ²„κ°€ μ œμž‘ν•œ μœ„ μ˜μƒμ„ 보고 ν¬μŠ€νŒ…ν•œ κΈ€μž…λ‹ˆλ‹€. λŒ€ν•™κ΅μ—μ„œ Python μˆ˜κ°•μ‹œ 닀루지 μ•Šμ•˜λ˜ λ‚΄μš©μ„ 닀뀄 Python 곡뢀에 도움이 되고자 μž‘μ„±ν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.


if _name_ = β€œ__main__” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ‹€μˆ˜

Git Hub μ½”λ“œλ₯Ό 보닀 보면 μ½”λ“œ λ§ˆμ§€λ§‰ 쀄에 ν•­ν•­ if __name__ == "__main__"으둜 μ‹œμž‘ν•˜λŠ” λ¬Έμž₯을 본적이 μžˆμ„ 것이닀.

if __name__ == '__main__':
    μ½”λ“œ

이 μ½”λ“œλŠ” ν˜„μž¬ 슀크립트 파일이 μ‹€ν–‰λ˜λŠ” μƒνƒœλ₯Ό νŒŒμ•…ν•˜κΈ° μœ„μƒˆ μ‚¬μš©ν•œλ‹€. λ‹€μŒ μ˜ˆμ‹œλ₯Ό 보며 μ‚΄νŽ΄λ³΄μž. κ°„λ‹¨ν•˜κ²Œ For 문을 돌렀 String을 좜λ ₯ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄ λ³΄μ•˜λ‹€.

좜λ ₯ κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™λ‹€.

I swear I'm useful: 0
I swear I'm useful: 1
I swear I'm useful: 2
I swear I'm useful: 3

ν•˜μ§€λ§Œ, νŒŒμ΄μ¬μ„ λͺ¨λ“ˆν™” ν˜Ήμ€ λΌμ΄λΈŒλŸ¬λ¦¬ν™” ν•΄μ„œ μ‚¬μš©ν•˜λŠ” κ²½μš°μ—λŠ” μ–΄λ–¨κΉŒ? 그럴 경우 μœ„ μ½”λ“œλ₯Ό λ‹€λ₯Έ κ³³μ—μ„œ import ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. κ°„λ‹¨ν•˜κ²Œ ipython을 μ‹€ν–‰ν•΄μ„œ ν™•μΈν•΄λ³΄μž.

>>> from one_main import useful_function
I swear I'm useful: 0
I swear I'm useful: 1
I swear I'm useful: 2
I swear I'm useful: 3
I swear I'm useful: 4

λ‚˜λŠ” λͺ¨λ“ˆμ„ λΆˆλŸ¬μ™€μ„œ ν•˜μ§ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ°λ„ μ „ 인데 Python은 λͺ¨λ“  슀크립트λ₯Ό λΆˆλŸ¬μ™€μ„œ 8번 μ€„μ˜ useful_function을 ν˜ΈμΆœν•΄μ£Όκ³  μžˆλ‹€. 이것을 ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•΄ μ€€λ‹€.

λΈ”λ½λ˜μ–΄ 있던 Line 11 ~ 12번이 블락 ν•΄μ œ λ˜μ—ˆλ‹€. μ½”λ“œλ₯Ό μ‹€ν–‰ 해보면 λ‹€μŒκ³Ό κ°™λ‹€.

>>> from one_main import useful_function
>>>

μ΄μ „κ³ΌλŠ” 달리 useful_function이 ν˜ΈμΆœλ˜μ§€ μ•Šμ€ κ²°κ³Όλ₯Ό λ³Ό 수 있고, λ‹€μŒκ³Ό 같이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

>>> from one_main import useful_function
>>> useful_function()
I swear I'm useful: 0
I swear I'm useful: 1
I swear I'm useful: 2
I swear I'm useful: 3
I swear I'm useful: 4


Exceptλ¬Έ μ œλŒ€λ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ‹€μˆ˜

Python μ½”λ“œλ₯Ό μž‘μ„±ν• λ•Œ 디버깅 ν˜Ήμ€ ν…ŒμŠ€νŒ…μœΌλ‘œ except을 μ‚¬μš©ν•˜λŠ”λ° λ‹€μŒκ³Ό 같이 μž‘μ„±ν•˜κ³€ ν•œλ‹€. While λ¬Έ μ•ˆμ— try와 exept문이 있고, try문에 μ–΄λ– ν•œ(λͺ¨λ“ ) 였λ₯˜κ°€ 생격을 경우 exept문을 μ‹€ν–‰ ν•œλ‹€λŠ” λœ»μ΄λ‹€.

μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰μ‹œμΌ°μ„ λ•Œ κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™λ‹€. μ£Όλͺ©ν•  점은 While을 μ’…λ£Œν•˜κΈ° μœ„ν•΄μ„œ Ctrl+cλ₯Ό 계속 눌러 보아도 execpt문이 μ‹€ν–‰ λ˜μ–΄ μ’…λ£Œ λ˜μ§€ μ•ŠλŠ” λ¬Έμ œμ΄λ‹€.

원인은 Ctrl+c을 λˆ„λ₯Ό 경우 SIGKILL Signal μ „λ‹¬λ˜μ„œ Python 싀행이 쀑지 λ˜μ–΄μ•Ό ν•˜λ‚˜, Python μŠ€ν¬λ¦½νŠΈμ—μ„œ 이λ₯Ό λ¬΄μ‹œν•˜κ³  execpt문을 μ‹€ν–‰ 되기 λ•Œλ¬Έμ΄λ‹€.

Wheeee! You Can't stop me
Wheeee! You Can't stop me
^COww... Whatever imma keep running # Ctrl + C
Wheeee! You Can't stop me
Wheeee! You Can't stop me
^COww... Whatever imma keep running # Ctrl + C

이λ₯Ό κ²°ν•˜κΈ° μœ„ν•΄μ„œ, exceptλ¬Έμ—μ„œ SIGKILL μ‹ ν˜Έλ₯Ό 받을 수 μžˆλ„λ‘ λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

execpt문에 Execption이 μΆ”κ°€ λ˜μ—ˆκ³  μ΄λŠ” SIGKILL을 λ¬΄μ‹œ ν•˜μ§€ μ•Šκ³  순수 Python codeλ‚΄μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œλ§Œ μ½”λ“œκ°€ μ‹€ν–‰λ˜λ„λ‘ 도와쀀닀.

profile
내일을 κΈ°λ‘ν•˜κΈ° μœ„ν•΄μ„œ μ˜€λŠ˜μ„ κΈ°λ‘ν•©λ‹ˆλ‹€ πŸ€—

0개의 λŒ“κΈ€