νŒŒμ΄μ¬μ„ μ‹œμž‘ν•˜λ©΄μ„œ-5

2020. 8. 24. 14:14γ†νŒŒμ΄μ¬ 기초

클래슀, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€,μ˜ˆμ™Έ 처리, λ‚΄μž₯ ν•¨μˆ˜, μ™Έμž₯ ν•¨μˆ˜

 

파이썬 κΈ°μ΄ˆκ°œλ…μ— λŒ€ν•œ λ§ˆμ§€λ§‰ 글이닀. ν•œ μ½”λ”© μœ νŠœλ²„λΆ„μ˜ κ°•μ˜ 덕뢄에 λΉ λ₯Έ μ‹œκ°„μ— νŒŒμ΄μ¬μ„ 배울 수 μžˆμ—ˆλ‹€.

 

였늘 λ°°μ›Œλ³Ό λ‚΄μš©μ€ 클래슀, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€, μ˜ˆμ™Έ 처리, λ‚΄μž₯ ν•¨μˆ˜, μ™Έμž₯ ν•¨μˆ˜μ΄λ‹€.

 

클래슀(class)λ₯Ό λ¨Όμ € μ‚΄νŽ΄λ³΄μž. νŒŒμ΄μ¬μ—μ„œμ˜ ν΄λž˜μŠ€λŠ” λ¬΄μ—‡μΌκΉŒ?

λ°˜λ³΅λ˜λŠ” λ³€μˆ˜ & λ©”μ„œλ“œ(ν•¨μˆ˜)λ₯Ό 미리 정해놓은 틀이라고 μƒκ°ν•˜λ©΄ λœλ‹€.

ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€λ³΄λ©΄ ν•˜λ‚˜μ˜ ν•¨μˆ˜μ— μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό κ³„μ†ν•΄μ„œ μ •μ˜ν•΄μ„œ λŒ€μž…ν•˜λŠ” 것이 번거둜울 것이닀.

이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ 클래슀λ₯Ό μ‚¬μš©ν•œλ‹€.

 

계산기λ₯Ό μ˜ˆμ‹œλ‘œ ν΄λž˜μŠ€κ°€ μ—†λŠ” 경우λ₯Ό λ¨Όμ € μƒκ°ν•΄λ³΄μž.

μš°λ¦¬λŠ” λ§μ…ˆ ν•¨μˆ˜add와 λΊ„μ…ˆ ν•¨μˆ˜minusν•¨μˆ˜λ₯Ό μ •μ˜ν•  것이닀.  

λ§μ…ˆμ„ λ¨Όμ €ν•˜κ³  λΊ„μ…ˆμ„ ν•˜λŠ” 경우λ₯Ό μ½”λ“œλ‘œ μž‘μ„±ν•΄λ³΄λ©΄ 이렇닀.

 

 

result1 = 0
result2 = 0

def add1(num):
    global result1
    result1 += num
    return result1
    
def add2(num):
    global result2
    result2 += num
    return result2
    
print(add1(3))
print(add1(4))
print(add2(3))
print(add2(7))

 

result1을 global둜 λ°”κΎΈκ³  result1을 3으둜 λ§Œλ“€κ³ , λ˜λ‹€μ‹œ add(4)λ₯Ό ν†΅ν•΄μ„œ 7μ„λ§Œλ“ λ‹€.

그리고 result2λ˜ν•œ μœ„μ™€ 같은 방법을 μ‚¬μš©ν•œλ‹€.

클래슀λ₯Ό μ΄μš©ν•˜λ©΄ μ–΄λ–¨κΉŒ?

 

class Calculator:
    def __init__(self):
        self.result = 0

    def add(self,num):
        self.result += num
        return self.result

cal1 = Calculator()
cal2 = Calculator()

print(cal1.add(3))
print(cal1.add(4))
print(cal2.add(3))
print(cal2.add(7))

 

μ΄ˆκΈ°κ°’λ§Œ 0으둜 μž‘μ•„μ£Όκ³ , cal1κ³Ό cal2 객체λ₯Ό 톡해 μ €μž₯된 값을 이어 λ‚˜κ°ˆ μˆ˜κ°€ μžˆλ‹€.

κ²‰μœΌλ‘œ λ³΄μ•˜μ„ λ•ŒλŠ” 별 차이가 μ—†μ–΄λ³΄μ΄μ§€λ§Œ, λ‚˜λˆ—μ…ˆ, κ³±μ…ˆ, λΊ„μ…ˆ 등이 λ“€μ–΄κ°„λ‹€λ©΄ 훨씬 νŽΈλ¦¬ν•˜λ‹€λŠ” 것을 체감할 μˆ˜κ°€ μžˆλ‹€.

λ‹€μŒμ€ μƒμ†κ°œλ…μ„ μ‚΄νŽ΄λ³΄μž.

 

상속은 λΆ€λͺ¨κ°€ μžμ‹μ—κ²Œ μž¬μ‚°μ„ λ¬Όλ €μ£ΌλŠ” κ²ƒμ²˜λŸΌ λ§ κ·ΈλŒ€λ‘œ μ“°μΈλ‹€.
aλΌλŠ” ν΄λž˜μŠ€μ™€ bλΌλŠ” ν΄λž˜μŠ€κ°€ μ‘΄μž¬ν•  λ•Œ, bν΄λž˜μŠ€κ°€ a클래슀λ₯Ό μƒμ†λ°›μ•˜λ‹€κ³  κ°€μ •ν•΄λ³΄μž.
κ·Έλ ‡λ‹€λ©΄ bν΄λž˜μŠ€λŠ” a클래슀의 ν•¨μˆ˜μ™€ λ³€μˆ˜λ“€μ„ μ‚¬μš©ν•  μˆ˜κ°€ μžˆλ‹€. μ—¬κΈ°μ„œ aν΄λž˜μŠ€λŠ” λΆ€λͺ¨ν΄λž˜μŠ€, bν΄λž˜μŠ€λŠ” μžμ‹ν΄λž˜μŠ€λΌκ³  λΆ€λ₯Έλ‹€.

ν•˜μ§€λ§Œ μœ μ˜ν•  μ μ΄ μžˆλ‹€.
aν΄λž˜μŠ€μ—μ„œμ˜ fly()ν•¨μˆ˜μ™€ bν΄λž˜μŠ€μ—μ„œμ˜ fly()ν•¨μˆ˜κ°€ λ‘˜ λ‹€ μ‘΄μž¬ ν•  λ•Œ bν΄λž˜μŠ€μ—μ„œμ˜ flyκ°€ μ‹€ν–‰λœλ‹€. 
두 κ°œμ˜ ν•¨μˆ˜κ°€ κ²ΉμΉ  λ•Œ, ν•­μƒ μžμ‹ν΄λž˜μŠ€μ˜ ν•¨μˆ˜κ°€ μ‹€ν–‰λœλ‹€λŠ” κ²ƒμ„ μ•Œμ•„두면 λœλ‹€. μ΄λ₯Ό μ˜€λ²„라이딩 μ΄λΌκ³  λΆ€λ₯Έλ‹€.

λͺ¨λ“ˆ
λͺ¨λ“ˆμ΄λž€? λ―Έλ¦¬ λ§Œλ“€μ–΄ λ†“은 .py파일(ν•¨μˆ˜, λ³€μˆ˜, ν΄λž˜μŠ€)이닀. 
λͺ¨λ“ˆμ„ λΆˆλŸ¬μ˜€λŠ” λ°©λ²•μ€ μ—¬λŸ¬κ°€μ§€ ν˜•νƒœμ— λ”°λΌ μ—¬λŸ¬κ°€μ§€κ°€ μ‘΄μž¬ν•œλ‹€.

-같은 νŒŒμΌκ³΅κ°„에 μžˆμ„ λ•Œ
import λͺ¨λ“ˆμ΄λ¦„

-같은 νŒŒμΌκ³΅κ°„에 μžˆμœΌλ©΄μ„œ ν•¨μˆ˜λ§Œ λΆˆλŸ¬μ˜€κ³  μ‹Άμ„ λ•Œ
from λͺ¨λ“ˆμ΄λ¦„ import λͺ¨λ“ˆν•¨μˆ˜ 

-ν•˜μœ„ ν΄λ”에 μžˆμ„ λ•Œ
λͺ¨λ“ˆμ΄λ¦„.path.append(파일경둜)

μš°λ¦¬λŠ” λͺ¨λ“ˆμ„ importν•  λ•Œ μ›ν•˜μ§€λ„ μ•ŠλŠ” λ¬Έμž₯이 μΆœλ ₯λ˜λŠ” κ²½μš°κ°€ μžˆλ‹€. μ „체λ₯Ό λΆˆλŸ¬μ™”κΈ° λ•Œλ¬Έμ΄λ‹€. μ΄λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œ μ“°μ΄λŠ” κ²ƒμ€ if __name__=="__main__"이닀.
이 μ‘°κ±΄μ‹μ˜ λœ»μ€ "이 λͺ¨λ“ˆμ΄ mainμ—μ„œ μ‹œμž‘ν–ˆμ„ λ•Œ λ’·λ¬Έμž₯을 μΆœλ ₯ν•œλ‹€" μ΄λ‹€. μΆœλ ₯문을 μ΄ μ‘°κ±΄λ¬Έ λ’€μ— μ λŠ”λ‹€λ©΄ μ˜λ„λŒ€λ‘œ μ‚¬μš©ν•  μˆ˜κ°€ μžˆλ‹€.


νŒ¨ν‚€μ§€
= λͺ¨λ“ˆ μ—¬λŸ¬ κ°œ λͺ¨μ•„놓은 κ²ƒ

__all__

__init__ μ΄λΌλŠ” μ΄ˆκΈ°ν™”λ₯Ό 해쀄 λ•Œ μ•ˆμ— μ¨μ£ΌλŠ” κ²ƒμœΌλ‘œ, import * μ‹œ 뢈러올 것듀을 μ λŠ” 것이닀.

ex) __all__ = ['smile']

 

μ˜ˆμ™Έμ²˜λ¦¬

 

μ˜ˆμ™Έμ²˜λ¦¬λž€ μž‘μ„±ν•œ μ½”λ“œκ°€ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ λ•Œ, 그에 λ§žλŠ” μ†ŒμŠ€κ°€ μ‹€ν–‰λ˜λŠ” 것이닀.

 

try: 

    였λ₯˜κ°€ λ°œμƒν•  수 μžˆλŠ” ꡬ문

except Exception as e :

    였λ₯˜ λ°œμƒ

else:
    였λ₯˜ λ°œμƒν•˜μ§€ μ•ŠμŒ

finally:

    무쑰건 λ§ˆμ§€λ§‰μ— μ‹€ν–‰

 

μ˜ˆμ™Έμ²˜λ¦¬μ— λŒ€ν•œ 였λ₯˜μ—λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆλŠ”λ° κ·Έ λͺ¨λ“  것을 톡틀어 작고 μ‹Άλ‹€ ν•œλ‹€λ©΄ Exception을 μ“°λ©΄ λœλ‹€.

 

λ‚΄μž₯ν•¨μˆ˜μ™€ μ™Έμž₯ν•¨μˆ˜

λ¨Όμ € λ‚΄μž₯ν•¨μˆ˜λŠ” len, max, mapκ³Ό 같이 μˆ˜λ§Žμ€ ν•¨μˆ˜λ“€μ΄ μ‘΄μž¬ν•œλ‹€. κ·ΈλŸ¬ν•œ 문법듀은 μ™ΈμšΈ ν•„μš”κ°€ μ—†κ³  ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ°Ύμ•„ μ“°λ©΄ λœλ‹€.

 

μ™Έμž₯ν•¨μˆ˜λŠ” 라이브러리 ν•¨μˆ˜λ‘œμ„œ importν•΄μ„œ μ“°λŠ” 것이닀.

μ˜ˆμ‹œλ‘œλŠ” pickle, time, random등이 μžˆλ‹€.