전체 글
-
== 와 is 의 차이언어/파이썬 2021. 1. 13. 10:01
is는 변수가 같은 Object 를 가르키면 True (같은 Object 인것인지를 확인하기 위해서는 id 함수를 사용하면 된다.) == 는 변수가 같은 Value 를 가리키면 True 이다 또한 신기한 것은 파이썬은 모든것이 다 객체이므로 id 메소드에 숫자를 넣어도 id 값이 나오고 None을 넣어도 id 값이 나오며 이 값은 변하지 않는 값이다. 또한 while 클래스_이름 is not None: 보다는 while not 클래스_이름 : 만 하여도 while 문이 돌아간다. 그 뿐만 아니라 if 문에서도 마찬가지 이다. 즉 조건절, 조건문에서 None은 False의 개념으로 not None 은 True의 개념으로 쓰이는 거 같다. list 에서도 조건문은 작동하는데 만약 list 가 빈상태이면 Fa..
-
with는 왜 쓰는 것일까언어/파이썬 2021. 1. 12. 20:52
with 는 정말 여러방면으로 쓰인다. 대표적인 예로는 파일을 입출력 할 때 많이 쓰이는 것을 알 수 있다. 그렇다면 with는 파일입출력만을 위해서 쓰이는 것일까? 그게 아니라면 어떻게 쓰이고 왜 쓰이는 것일까? 1. 파일 입출력만을 위해 쓰인다. => 아니다. 우선 with를 어떻게 쓰는지 왜 쓰는지 알아야 빠른 이해가 된다. 2. with 는 왜 쓰이는 것일까? => 1. 파일을 다룰때 with 블록을 통해 명시적으로 close() 메소드를 호출하지 않고도 파일을 닫을 수 있다. 2 파일을 닫을때는 파일 내부에 __exit__()가 구현되어있기 때문에 with 블록이 종료될때 자동으로 __exit__() 메소드가 호출되어 파일을 close 하게 된다. 3.클래스를 호출할때도 사용된다.(단 2. 에서..
-
최댓값과 최솟값언어/파이썬 2021. 1. 12. 12:42
최댓값과 최솟값의 초깃값을 지정하는 방법에는 여러 가지가 있다. 우선 첫번째로는 sys를 사용하면 위와 같이 maxsize를 사용하면 된다. 이 경우 9223372036854775808 가 나온다. 그 다음 float()를 사용하여 하는 방법도 있다. 이 경우 "float('inf')"가 생성되는데 이것이 sys.maxsize 보다 크다 하지만 알고리즘을 풀때는 보통 범위가 주어지기 때문에 sys.maxsize만 써도 충분하다. 마지막으로 가장 않좋은 방법인 999999999를 쓰는 방법이 있다. 물론 알고리즘을 풀때 사이즈를 다 정해주어서 크게 상관이 없지만 파이썬의 숫자형은 임의 정밀도 를 지원하며 사실상 무한대의 값을 지원하기 때문에 sys.maxsize를 선언하는것도 그렇게 큰 의미는 없다. 하지..
-
파이썬 내장함수들언어/파이썬 2021. 1. 11. 23:09
파이썬은 여러가지 내장 함수들이 있다. 모든것을 외우면 물론 좋겠지만 체득 하는것이 더 효율적이라고 판단하여 기억이 나지 않을때 마다 하나씩 채우기로 한다. 1. zip 2. range 3. any 4. all zip zip()은 2개 이상의 시퀀스를 짧은 길이를 기준으로 일대일 대응하는 새로운 튜플시퀀스를 만드는 역할을 한다. 밑의 사진을 예시로 설명해보겠다. 파이썬 2에서는 zip()의 결과가 바로 리스트가 된다. 하지만 파이썬 3+에서는 제너레이터를 리턴한다. 제너레이터를 리턴하게 되면 전의 포스팅 처럼 메모리 적인 부분에서 좀 더 효율적으로 사용할 수 있는 이점이 있다. 제너레이터에서 실젯값을 추출하기 위해서는 다음과 같이 list()로 한번 더 묶어주면 된다. 아울러 zip()의 결과 자체는 리..
-
nn.Module에서 super머신러닝 및 딥러닝 2021. 1. 10. 22:26
위에 코드들의 공통점은 클래스들이 모두 pytorch의 nn.Module을 상속했다는 것이다. 하지만 이것의 super에서 __init__ 을 호출 할때 어떠한 것은 매개변수에 자신의 클래스 이름과 self를 넣는 반면 어떠한 것은 아무것도 넣지 않고 그냥 호출한다. 개인적으로 뭔가 이해가 안되는 코드가 있으면 계속 눈에 밟여서 신경이 쓰여 찾아본 결과 단순 버전 차이로 발생된 차이이다. 즉, pytorch의 전 버전에서는 어떠한 파라미터를 넣지 않는 것이 맞는것이다. 위의 코드는 pytorch에서 class Module(object): 의 __init__을 가져온것이다. 보다시피 self 외에 어떠한 파라미터도 갖지 않는 것을 볼 수 있다. 그렇다면 어떤 클래스를 만들고 만약 그 클래스가 pytorch..
-
정적메소드와 클래스메소드언어/파이썬 2021. 1. 9. 16:33
파이썬에서 해당 문제는 클래스안에서 다뤄진다. 보통의 인스턴스 메소드가 객체의 인스턴스 필드를 self를 통해 접근할 수 있는 반면, 정적 메소드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스 할 수 없다. 예를 들어 현재 정적메소드로 되어있는 is_square함수를 보면 어떠한 인스턴스 필드를 사용하지 않는것을 볼 수 있다. 보통 staticmethod는 객체 필드와 독립적이지만 로직상 클래스내에 포함됭야 하는 메소드에 사용된다. 이는 메소드 앞에 @staticmethod라는 Decorator를 표시하여 해당 메소드가 정적 메소드인것을 표시한다. 클래스 메소드는 메소드 앞에 @classmethod 라는 Decorator를 표시하여 해당 메소드가 클래스 메소드라는 것을 표시한다. 클래스 ..
-
np.zeros 와 np.zeros_like 의 차이머신러닝 및 딥러닝 2021. 1. 6. 12:57
np.random.randn vs np.random.rand 와 더불어 가장 헷갈리는 것이 np.zero 와 np.zeros_like 의 차이일것이다. 언어 자체에 의미를 두는것이 좀 더 빠른 이해에 도움이 된다. 시간이 없는 사람들을 위해 간단히 만 설명하자면 np.zeros : 0으로 가득찬 Array를 배출한다. 즉, 여기에는 튜플, int, 혹은 list의 값이 들어와야 한다 그렇게 되면 해당하는 shape으로 형태를 만들어준다음 Array를 return 한다. 만약 여기에 np.zeros_like 처럼 변수를 넣어주면 오류가 나온다. np.zeros_like : 어떤 변수만큼의 사이즈인 0 으로 가득 찬 Array를 배출한다. 즉, 여기에는 변수가 들어와야한다. 여기는 변수 말고도 그냥 [2,3..