본문 바로가기

전체 글399

재귀호출 1. 함수에서 재귀호출 사용하기 def hello(): print('Hello, world!') hello() hello() Hello, world! Hello, world! Hello, world! ...(생략) Traceback (most recent call last): File "C:\project\recursive_function_error.py", line 5, in hello() File "C:\project\recursive_function_error.py", line 3, in hello hello() File "C:\project\recursive_function_error.py", line 3, in hello hello() File "C:\project\recursive_functi.. 2023. 11. 21.
함수 1. 빈 함수 만들기 내용이 없는 빈 함수를 만들 때는 코드 부분에 pass를 넣어줍니다. def hello(): pass 2. 함수 독스트링 사용하기 파이썬에서는 함수의 :(콜론) 바로 다음 줄에 """ """(큰따옴표 세 개)로 문자열을 입력하면 함수에 대한 설명을 넣을 수 있습니다. 이런 방식의 문자열을 독스트링(문서화 문자열, documentation strings, docstrings)이라고 합니다. 단, 독스트링의 윗줄에 다른 코드가 오면 안 됩니다. def 함수이름(매개변수): """독스트링""" 코드 def 함수이름(매개변수): """ 여러 줄로 된 독스트링 """ 코드 독스트링은 ' '(작은따옴표), " "(큰따옴표), ''' '''(작은따옴표 세 개)로 만들어도 되지만, 파이썬 코딩 스.. 2023. 11. 19.
Exception 1. try except로 사용하기 예외 처리를 하려면 다음과 같이 try에 실행할 코드를 넣고 except에 예외가 발생했을 때 처리하는 코드를 넣습니다. try: 실행할 코드 except: 예외가 발생했을 때 처리하는 코드 2. 특정 예외만 처리하기 이번에는 except에 예외 이름을 지정해서 특정 예외가 발생했을 때만 처리 코드를 실행하도록 만들어보겠습니다. try: 실행할 코드 except 예외이름: 예외가 발생했을 때 처리하는 코드 try_except_exception.py y = [10, 20, 30] try: index, x = map(int, input('인덱스와 나눌 숫자를 입력하세요: ').split()) print(y[index] / x) except ZeroDivisionError:.. 2023. 11. 19.
덕타이핑 / 믹스인 덕타이핑 덕 타이핑이란 무엇인가요? 덕 타이핑은 실제 타입(클래스)은 상관하지 않고, 구현된 메서드로만 판단하는 방식입니다. 덕 타이핑은 "만약 어떤 새가 오리처럼 걷고, 헤엄치고, 꽥꽥거리는 소리를 낸다면 나는 그 새를 오리라 부르겠다."라는 덕 테스트(오리 테스트)에서 유래한 말입니다. class Duck: # 오리 클래스를 만들고 quack과 feathers 메서드 정의 def quack(self): print('꽥~!') def feathers(self): print('오리는 흰색과 회색 털을 가지고 있습니다.') class Person: # 사람 클래스를 만들고 quack과 feathers 메서드 정의 def quack(self): print('사람은 오리를 흉내냅니다. 꽥~!') def fea.. 2023. 11. 19.
named tuple named tuple collections 모듈 namedtuple은 자료형 이름과 요소의 이름을 지정하면 클래스를 생성해줍니다. 자료형 이름 - 문자열 요소의 이름 - 문자열 리스트 클래스 = collections.namedtuple( '자료형이름' , [ '요소이름1' , '요소이름2' ] ) namedtuple로 생성한 클래스는 값을 넣어서 인스턴스를 만들 수 있으며 인스턴스.요소이름 또는 인스턴스[인덱스] 형식으로 요소에 접근할 수 있습니다. 인스턴스 = 클래스(값1, 값2) 인스턴스 = 클래스(요소이름1=값1, 요소이름2=값2) 인스턴스.요소이름1 인스턴스[인덱스] 다음은 namedtuple을 사용하여 점을 표현한 뒤 두 점의 거리를 구합니다. two_point_namedtuple.py impo.. 2023. 11. 17.
두점 사이 거리구하기 import math class Point2D: def __init__(self, x, y): self.x = x self.y = y p1 = Point2D(x=30, y=20) # 점1 p2 = Point2D(x=60, y=50) # 점2 a = p2.x - p1.x # 선 a의 길이 b = p2.y - p1.y # 선 b의 길이 c = math.sqrt(math.pow(a, 2) + math.pow(b, 2)) print(c) # 42.42640687119285 import math class Point2D: def __init__(self, x=0, y=0): self.x = x self.y = y length = 0.0 p = [Point2D(), Point2D(), Point2D(), Point.. 2023. 11. 17.
self class AdvancedList(list): def replace(self, old, new): while old in self: self[self.index(old)] = new x = AdvancedList([1, 2, 3, 1, 2, 3, 1, 2, 3]) x.replace(1, 100) print(x) 2023. 11. 17.
추상 클래스 추상 클래스 파이썬은 추상 클래스(abstract class)라는 기능을 제공합니다. 추상 클래스는 메서드의 목록만 가진 클래스이며 상속받는 클래스에서 메서드 구현을 강제하기 위해 사용합니다. 먼저 추상 클래스를 만들려면 import로 abc 모듈을 가져와야 합니다( abc는 abstract base class의 약자입니다). 그리고 클래스의 ( )(괄호) 안에 metaclass=ABCMeta를 지정하고, 메서드를 만들 때 위에 @abstractmethod를 붙여서 추상 메서드로 지정합니다. from abc import * class 추상클래스이름(metaclass=ABCMeta): @abstractmethod def 메서드이름(self): 코드 여기서는 from abc import *로 abc 모듈의 .. 2023. 11. 17.
메서드 탐색 순서 메서드 탐색 순서 확인하기 많은 프로그래밍 언어들이 다이아몬드 상속에 대한 해결책을 제시하고 있는데 파이썬에서는 메서드 탐색 순서(Method Resolution Order, MRO)를 따릅니다. 클래스.mro() 클래스.__mro__ >>> D.mro() [, , , , ] object 클래스 파이썬에서 object는 모든 클래스의 조상입니다. 그래서 int의 MRO를 출력해보면 int 자기 자신과 object가 출력됩니다. >>> int.mro() [, ] class X: pass 괄호 안에 object를 넣은 것과 같습니다. class X(object): pass 파이썬 3에서는 괄호 안에 object를 넣어도 되고 넣지 않아도 됩니다. 2023. 11. 17.