본문 바로가기

BASIC47

클로저 1. 변수의 사용 범위 알아보기 전역 변수(global variable) 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수를 전역 변수(global variable)라고 부릅니다. 특히 전역 변수에 접근할 수 있는 범위를 전역 범위(global scope)라고 합니다. 지역 변수(local variable) 변수 x는 함수 foo 안에서 만들었기 때문에 foo의 지역 변수(local variable)입니다. 따라서 지역 변수는 변수를 만든 함수 안에서만 접근할 수 있고, 함수 바깥에서는 접근할 수 없습니다. 특히 지역 변수를 접근할 수 있는 범위를 지역 범위(local scope)라고 합니다. x = 10 # 전역 변수 def foo(): print(x) # 전역 변수 출력 foo() print(x.. 2023. 11. 23.
람다 표현식(lambda expression) 1. 람다 표현식 사용하기 람다 표현식은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용합니다. >>> def plus_ten(x): ... return x + 10 ... >>> plus_ten(1) 11 lambda 매개변수들: 식 >>> lambda x: x + 10 실행을 해보면 함수 객체가 나오는데, 이 상태로는 함수를 호출할 수 없습니다. 왜냐하면 람다 표현식은 이름이 없는 함수를 만들기 때문입니다. 그래서 람다 표현식을 익명 함수(anonymous function)로 부르기도 합니다. lambda로 만든 익명 함수를 호출하려면 다음과 같이 람다 표현식을 변수에 할당해주면 됩니다. >>> plus_ten = lambda x: x + 10 >>> plus_ten(1) 1.. 2023. 11. 22.
재귀호출 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.