πŸ₯Python

    점프 투 파이썬 05 파이썬 λ‚ κ°œ 달기 λ˜μƒˆκΉ€ 문제

    #1. Calculator ν•¨μˆ˜λ₯Ό μƒμ†ν•˜λŠ” UpgradeCalculatorλ₯Ό λ§Œλ“€κ³ , 값을 λΊ„ 수 μžˆλŠ” minus λ©”μ„œλ“œ μΆ”κ°€ν•˜κΈ° class Calculator: def __init__(self): self.value = 0 def add(self, val): self.value +=val class UpgradeCalculator(Calculator): def minus(self, val): self.value -= val cal = UpgradeCalculator() cal.add(10) cal.minus(7) print("1번 ",cal.value) #2. κ°μ²΄λ³€μˆ˜ valueκ°€ 100μ΄μƒμ˜ 값은 κ°€μ§ˆ 수 없도둝 μ œν•œν•˜λŠ” MaxLimitCalculator 클래슀 λ§Œλ“€κΈ° (Calculator 클래슀 상..

    파이썬 map ν•¨μˆ˜

    map ν•¨μˆ˜ 파이썬 λ‚΄μž₯ ν•¨μˆ˜ 쀑 ν•˜λ‚˜λ‘œ, μ—¬λŸ¬ 개의 iterable(반볡 κ°€λŠ₯ν•œ 객체)을 λ°›μ•„μ„œ νŠΉμ • ν•¨μˆ˜λ₯Ό 각 μš”μ†Œμ— μ μš©ν•˜μ—¬ μƒˆλ‘œμš΄ iterable을 μƒμ„±ν•©λ‹ˆλ‹€. map(ν•¨μˆ˜, iterable1, iterable2, ...) map ν•¨μˆ˜λŠ” μƒˆλ‘œμš΄ map 객체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 κ°μ²΄λŠ” iterator(반볡자)이며, ν•„μš”ν•  λ•Œλ§ˆλ‹€ 값을 μƒμ„±ν•©λ‹ˆλ‹€. 지연 평가(lazy evaluation)라고도 λΆˆλ¦¬λŠ” 이 방식은 λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 있게 ν•©λ‹ˆλ‹€. #리슀트의 각 숫자λ₯Ό 제곱 numbers = [1, 2, 3, 4, 5] #λžŒλ‹€ν•¨μˆ˜κ°€ λ¦¬μ‹œνŠΈμ˜ 각 μš”μ†Œμ— 적용된 κ°’μœΌλ‘œ κ΅¬μ„±λœ map객체 생성됨 squared_numbers = map(lambda x: x**2, numbers) list(map(.....

    파이썬 iterable과 iterator

    iterableκ³Ό iterator IteratorλŠ” 값을 ν•˜λ‚˜μ”© λ°˜ν™˜ν•˜λŠ” 데에 νŠΉν™”λ˜μ–΄ 있고, iterable은 μ—¬λŸ¬ 값을 가진 κ°μ²΄λ‘œμ„œ 반볡 κ°€λŠ₯ν•œ νŠΉμ„±μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€. Iterable(반볡 κ°€λŠ₯ν•œ 객체): λ‚΄λΆ€ μš”μ†Œμ— λŒ€ν•΄ 순회(iterate)ν•  수 μžˆλŠ” 객체λ₯Ό λ§ν•©λ‹ˆλ‹€. for λ£¨ν”„μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ©°, in μ—°μ‚°μžλ‘œ 값에 μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€. λ‚΄μž₯ ν•¨μˆ˜ **iter()**λ₯Ό μ‚¬μš©ν•˜μ—¬ iterator둜 λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μΈ iterable μ˜ˆμ‹œλ‘œλŠ” 리슀트, νŠœν”Œ, λ¬Έμžμ—΄μ΄ μžˆμŠ΅λ‹ˆλ‹€. my_list = [1, 2, 3, 4, 5] for item in my_list: print(item) Iterator(반볡자): next() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ 값을 μ°¨λ‘€λ‘œ κ°€μ Έμ˜¬ 수 μžˆλŠ” 객체λ₯Ό λ§ν•©λ‹ˆλ‹€. 클..

    파이썬 λžŒλ‹€ ν•¨μˆ˜(lambda)와 ν™œμš©, μ‹€μŠ΅ 예제

    λžŒλ‹€ ν•¨μˆ˜ νŒŒμ΄μ¬μ—μ„œ 읡λͺ…μ˜ ν•¨μˆ˜λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” κ°„λ‹¨ν•œ ν•œ μ€„μ§œλ¦¬ ν•¨μˆ˜μž…λ‹ˆλ‹€. 주둜 κ°„λ‹¨ν•œ μ—°μ‚°μ΄λ‚˜ ν•¨μˆ˜λ₯Ό 인라인으둜 μ •μ˜ν•  λ•Œ μœ μš©ν•˜κ²Œ ν™œμš©λ©λ‹ˆλ‹€. λ³΅μž‘ν•œ λ‘œμ§μ΄λ‚˜ μ—¬λŸ¬ μ€„μ˜ μ½”λ“œλ₯Ό κ°–λŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•ŒλŠ” 일반적인 def ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜ μ •μ˜κ°€ 더 μ ν•©ν•©λ‹ˆλ‹€. lambda ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜λ˜λ©°, **ν‘œν˜„μ‹**은 ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. lambda λ§€κ°œλ³€μˆ˜: ν‘œν˜„μ‹ #μ˜ˆμ‹œ add = lambda x, y: x + y result = add(3, 5) print(result) # 좜λ ₯ κ²°κ³Ό: 8 λžŒλ‹€ ν•¨μˆ˜μ˜ ν™œμš© λ§μ…ˆ ν•¨μˆ˜: add = lambda x, y: x + y result = add(3, 5) # κ²°κ³Ό: 8 제곱 ν•¨μˆ˜: square = lambda x: x**2 res..

    파이썬 sort ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’

    words.sort(key=lambda x: len(x)): words 리슀트λ₯Ό λ¬Έμžμ—΄μ˜ 길이λ₯Ό κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•˜κ³ , κ·Έ κ²°κ³Όλ₯Ό words λ¦¬μŠ€νŠΈμ— μ μš©ν•©λ‹ˆλ‹€. sort λ©”μ„œλ“œλŠ” 정렬을 μˆ˜ν–‰ν•˜κ³  μ›λž˜μ˜ 리슀트λ₯Ό λ³€κ²½ν•˜λ―€λ‘œ λ°˜ν™˜κ°’μ΄ μ—†μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ **print(words)**λ₯Ό 톡해 μ •λ ¬λœ 리슀트λ₯Ό 좜λ ₯ν•˜λ©΄ κ²°κ³Όκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€. print(words.sort(key=lambda x: len(x))): sort λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜κ³ , 이 λ©”μ„œλ“œμ˜ λ°˜ν™˜κ°’μΈ **None**을 좜λ ₯ν•©λ‹ˆλ‹€. sort λ©”μ„œλ“œλŠ” 리슀트λ₯Ό μ •λ ¬ν•˜κ³  μ›λž˜μ˜ 리슀트λ₯Ό λ³€κ²½ν•˜λ©° λ°˜ν™˜κ°’μ΄ μ—†μœΌλ―€λ‘œ **None**을 λ°˜ν™˜ν•©λ‹ˆλ‹€. λ”°λΌμ„œ μ •λ ¬λœ 리슀트λ₯Ό 직접 좜λ ₯ν•˜λŠ” 것이 μ•„λ‹ˆλΌ **None**을 좜λ ₯ν•©λ‹ˆλ‹€.

    점프 투 파이썬 05 파이썬 λ‚ κ°œ 달기 (클래슀, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€, μ˜ˆμ™Έμ²˜λ¦¬, λ‚΄μž₯ν•¨μˆ˜, ν‘œμ€€ 라이브러리, μ™ΈλΆ€ 라이브러리)

    5-1 클래슀 ν΄λž˜μŠ€λŠ” μ™œ ν•„μš”ν•œκ°€? 계산기 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€λ©° 클래슀 μ•Œμ•„λ³΄κΈ° 클래슀λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜λ§Œ μ‚¬μš©ν•  λ•Œλ³΄λ‹€ 객체λ₯Ό μƒμ„±ν•˜μ—¬ κ°„λ‹¨ν•˜κ²Œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•  수 있음 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)) ν΄λž˜μŠ€μ™€ 객체 클래슀(class) : λ˜‘κ°™μ€ 무언가λ₯Ό 계속 λ§Œλ“€μ–΄λ‚Ό 수 μžˆλŠ” 섀계 도면(κ³Όμžν‹€) 객체(object) : 클래슀둜 λ§Œλ“€μ–΄λ‚Έ..

    슀크립트, λͺ¨λ“ˆ, μ½”λ“œ

    슀크립트 (Script): 보톡 κ°„λ‹¨ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 일련의 λͺ…λ Ήμ–΄λ‚˜ μ½”λ“œμ˜ 집합 μŠ€ν¬λ¦½νŠΈλŠ” λŒ€λΆ€λΆ„ ν•΄μ„ν˜• μ–Έμ–΄ (interpreted language)μ—μ„œ μ‚¬μš©λ˜λ©°, λͺ…λ Ήμ–΄λ₯Ό 순차적으둜 μ‹€ν–‰ν•˜μ—¬ μ›ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ 주둜 μž‘μ€ 규λͺ¨μ˜ μž‘μ—…μ΄λ‚˜ μžλ™ν™” 슀크립트둜 μ‚¬μš©λ¨ λͺ¨λ“ˆ (Module): ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ½”λ“œμ˜ μž¬μ‚¬μš©μ„ μœ„ν•΄ λ§Œλ“€μ–΄μ§„ λ…λ¦½λœ λ‹¨μœ„ 일반적으둜 파일 λ‹¨μœ„λ‘œ κ΅¬μ„±λ˜λ©°, λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ—μ„œ μž„ν¬νŠΈν•˜μ—¬ μ‚¬μš©ν•  수 있음 λͺ¨λ“ˆμ€ ν•¨μˆ˜, 클래슀, λ³€μˆ˜ 등을 포함할 수 있음 νŒŒμ΄μ¬μ—μ„œλŠ” .py ν™•μž₯자λ₯Ό 가진 파일이 λͺ¨λ“ˆμ„ λ‚˜νƒ€λƒ„ μ½”λ“œ (Code): 일반적으둜 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ‘œ μž‘μ„±λœ λͺ…λ Ήμ–΄ λ˜λŠ” ν‘œν˜„μ‹ "μ½”λ“œ"λŠ” ν”„λ‘œκ·Έλž¨μ„ κ΅¬μ„±ν•˜λŠ” λͺ¨λ“  λͺ…령어와 ν‘œν˜„μ‹μ„ 포함할 수 있음 "슀크립트"도 일쒅..

    if __name__ == "__main__

    if name == "main μŠ€ν¬λ¦½νŠΈκ°€ 직접 싀행될 λ•Œ μ½”λ“œ 블둝이 μ‹€ν–‰λ˜λ„λ‘ ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. ν•΄λ‹Ή 블둝 μ•ˆμ— μœ„μΉ˜ν•œ μ½”λ“œλ“€μ€ λͺ¨λ“ˆλ‘œμ„œ λ‹€λ₯Έ μŠ€ν¬λ¦½νŠΈμ—μ„œ μž„ν¬νŠΈλ˜μ—ˆμ„ λ•ŒλŠ” μ‹€ν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. def some_function(): print("Function inside the module") if __name__ == "__main__": # 이 뢀뢄은 μŠ€ν¬λ¦½νŠΈκ°€ 직접 싀행될 λ•Œλ§Œ 싀행됨 print("This script is being run directly") some_function() λ‹€λ₯Έ μŠ€ν¬λ¦½νŠΈμ—μ„œ 이 λͺ¨λ“ˆμ„ μž„ν¬νŠΈν•˜λ©΄ if __name__ == "__main__": 뢀뢄이 μ‹€ν–‰λ˜μ§€ μ•Šκ³ , λͺ¨λ“ˆ λ‚΄μ˜ ν•¨μˆ˜ 등을 μ‚¬μš©ν•  수 μžˆλ‹€. 파이썬 슀크립트의 두 가지 μ£Όμš” μš©λ„ 직접 싀행될 λ•Œ (as..