목록프로그래밍 언어 (72)
나의 지식 보관소
제네레이터 제네레이터는 이터레이터를 만드는 도구이다. 제너레이터는 일반함수와 많이 닮았지만 데이터를 반환할때 return 대신 yield를 사용한다. 함수는 yield를 만나면 값을 반환하고 그 자리에서 실행을 멈춘다. 그리고 다시 next메서드가 호출되면 중단된 지점 부터 다시 실행한다. def Generator(data): for index in range(0, len(data)): yield data[index] + '!' for char in Generator('Hello'): print(char) temp = Generator('World') print(temp.__next__()) print(temp.__next__()) print(temp.__next__()) print(temp.__next..
리스트 컴프리헨션 리스트 컴프리헨션은 리스트를 사용할때 선언과 할당을 동시에 한줄로 할수있게 해주는 문법이다. 리스트 컴프리헨션의 기본적인 문법은 다음과 같다. [ for in ] 예를 들면 다음 두 표현은 같은 표현이다. # 이 표현과 size = 10 arr = [0] * size for i in range(len(arr)): arr[i] = i * i # 이 표현은 결과가 같다. size = 10 arr = [i * i for i in range(size)] 바깥을 감싸는 기호가 []라면 리스트가 만들어지고, {}라면 집합이, {}를 사용하면서 for문 앞에 key: value 쌍을 써주고 사용하는 변수를 두개로 두면 딕셔너리가 만들어진다. ()는 튜플이 아니라 제너레이터가 생성되며 튜플을 생성하려..
이터레이터 ( Iterator ) 이터레이터는 반복자라는 뜻으로 객체 지향 언어에서 배열이나 배열과 유사한 자료 구조의 내부 요소를 순회하는 객체이다. 파이썬에서는 for문을 써서 데이터를 하나씩 처리할 수 있는 시퀀스들을 Iterable Object라고 부르고 list, dict, set, str, bytes, tuple, range 등이 해당된다. for a in [2,9,3,6,7]: print(a) for b in "Hello World": print(b) 파이썬의 내장함수인 iter()는 "iter(Iterable객체)"와 같이 사용하여 해당 Iterable 객체의 Iterator를 리턴한다. Iterator 객체의 next 메서드를 사용하면 다음 요소를 가져올 수 있고 만약 next요소가 없으..
피이썬의 예외 처리는 기본적으로 아래와 같은 구성을 띤다. try: ... except [ 발생 오류 [ as 오류 메세지 변수 ] ]: ... []로 둘러싼것은 생략 가능하다는 표현이다. 만일 except:만 사용하면 발생하는 모든 오류를 except블럭에서 처리하고 오류를 지정하면 해당 오류일때만 처리한다 오류 메세지 변수는 말그대로 오류메세지를 저장한다. except는 여러개 올 수 있고, 하나의 except에서 여러 오류를 처리하고 싶다면 except(error1, error2): 처럼 괄호를 사용해 묶어서 처리하면 된다. pass 오류를 그냥 통과시킬때에는 except블럭내에 pass만 써주면 된다. pass 명령은 단순히 실행할 코드가 없음을 나타낸다. raise 오류를 일부러 발생시킬때에는 ..
__all__변수는 string형 리스트로 __init__.py를 사용할 경우에 __all__변수에 import가능한 모듈을 정의해주어야 한다. 하지만 만약 form의 마지막 항목이 모듈인 상태로 import*을 사용하면 이에 위 원칙에 상관없이 전부 사용가능하다. 위 원칙은 패키지를 대상으로 import * 하는 경우이다.
상속 클래스를 상속하기 위해서는 다음과 같이 클래스 이름 뒤 소괄호 안에 상속할 클래스를 넣어주면 된다. class subclass(parentClass) 메서드 오버라이딩 부모클래스의 메서드를 오버라이드하기 위해서는 그저 부모클래스에 있는 메서드와 동일한 이름으로 메서드를 다시 만들면 된다. 클래스 변수 클래스변수는 다른언어에서의 static과 살짝 비슷하면서 다르다. 클래스 변수는 클래스에 선언한 변수로써 다음과 같이 선언한다. class Person: age = 10 이렇게 선언한 클래스변수는 클래스이름.클래스변수 로 사용할 수 있다. 이러한 점은 static과 같다. 하지만 다른점은 클래스변수는 객체에서도 접근이 가능한것에( 단 다른 객체에서 접근해도 같은 주소값에 있는 클래스변수에 접근하는 것 ..
파이썬에서는 생성자를 포함한 대다수의 메서드들이 첫번째 매개변수로 self(이름을 바꿀순 있는데 보통 일케 쓴다)를 갖는다. __init__에서의 self는 방금 생성된 객체를 자동으로 참조하고, 메서드에서의 self는 메서드를 호출한 객체를 자동으로 참조한다. (자동으로 참조하므로 호출시에 첫번째 매개변수는 무시하고 다른 인자를 넘겨주면된다.) 첫줄에서 대다수의 메서드들이라고 표현한 까닭은 클래스이름.메서드 형태로 호출할때에는 self 없어도 된다. 그말은 즉 이 형태로 호출할시 첫번째 매개변수가 어떤 객체를 자동으로 참조하지 않는다는 뜻이 되므로, 필요할시에는 명시적으로 직접 어떤 객체를 인자로 넘겨주어야한다.