목록프로그래밍 언어/파이썬 (23)
나의 지식 보관소
__all__변수는 string형 리스트로 __init__.py를 사용할 경우에 __all__변수에 import가능한 모듈을 정의해주어야 한다. 하지만 만약 form의 마지막 항목이 모듈인 상태로 import*을 사용하면 이에 위 원칙에 상관없이 전부 사용가능하다. 위 원칙은 패키지를 대상으로 import * 하는 경우이다.
상속 클래스를 상속하기 위해서는 다음과 같이 클래스 이름 뒤 소괄호 안에 상속할 클래스를 넣어주면 된다. class subclass(parentClass) 메서드 오버라이딩 부모클래스의 메서드를 오버라이드하기 위해서는 그저 부모클래스에 있는 메서드와 동일한 이름으로 메서드를 다시 만들면 된다. 클래스 변수 클래스변수는 다른언어에서의 static과 살짝 비슷하면서 다르다. 클래스 변수는 클래스에 선언한 변수로써 다음과 같이 선언한다. class Person: age = 10 이렇게 선언한 클래스변수는 클래스이름.클래스변수 로 사용할 수 있다. 이러한 점은 static과 같다. 하지만 다른점은 클래스변수는 객체에서도 접근이 가능한것에( 단 다른 객체에서 접근해도 같은 주소값에 있는 클래스변수에 접근하는 것 ..
파이썬에서는 생성자를 포함한 대다수의 메서드들이 첫번째 매개변수로 self(이름을 바꿀순 있는데 보통 일케 쓴다)를 갖는다. __init__에서의 self는 방금 생성된 객체를 자동으로 참조하고, 메서드에서의 self는 메서드를 호출한 객체를 자동으로 참조한다. (자동으로 참조하므로 호출시에 첫번째 매개변수는 무시하고 다른 인자를 넘겨주면된다.) 첫줄에서 대다수의 메서드들이라고 표현한 까닭은 클래스이름.메서드 형태로 호출할때에는 self 없어도 된다. 그말은 즉 이 형태로 호출할시 첫번째 매개변수가 어떤 객체를 자동으로 참조하지 않는다는 뜻이 되므로, 필요할시에는 명시적으로 직접 어떤 객체를 인자로 넘겨주어야한다.
파이썬에서는 블럭단위의 스코프는 존재하지 않는다. 파이썬에서 변수는 그저 지역 변수와 전역 변수만이 존재할 뿐이다.
람다는 def와 동일한 역할을 하는데 보통 함수를 한줄로 간결하게 만들 때 사용한다. lambda 매개변수1, 매개변수2, ...: 매개변수를 사용한 표현식 다음과 같이 사용한다. add = lambda a, b: a + b print(add('1','2'))
global 명령어를 사용하면 함수 안에 있는 변수를 밖에서도 사용할수있다.
함수 정의 파이썬에서의 함수는 다음과 같이 선언한다. 이때 def는 함수 호출을 위한 예약어이다. def add(a, b): return a + b print(add(1, 3)) print(add(a=2, b=4)) # 이 처럼 매개변수를 지정할수도 있다. 반환형식에대한 명시가 없다는것이 특징이고 반환형식이 있든 없든 상관없다. 가변 인자 함수 def add(*args): result = 0 for i in args: result = result + i return result print(add(1,2,3,4)) print(add(1,2,3,4,5,6,7,8,9)) 위 코드처럼 인자가 몇개 입력될지 모르는 함수를 만들때에는 매개변수 앞에 *을 붙여주면 된다. 그럼 받은 값들을 모두 모아서 튜프로 만들어준..
리스트 내포는 위와 같은 코드를 더 직관적이고 편리하게 만들 수 있게 해준다. 리스트 내포의 일반 문법은 다음과 같다. [표현식 for 항목 in 반복가능객체 if 조건] if 조건 부분은 생략이 가능하다. for문을 여러개 사용하는것도 가능하다. [표현식 for 항목1 in 반복가능객체1 if 조건1 for 항목2 in 반복가능객체2 if 조건2 ... for 항목n in 반복가능객체n if 조건n] 아래와 같은 코드가 있다고 가정해보자. a = [1,2,3,4] result = [] for num in a: result.append(num*3) print(result) 이를 리스트 내포로 고치면 다음과 같다. a = [1,2,3,4] result = [num * 3 for num in a] print..