참조: https://blog.naver.com/parkjy76/30167615254 Python에서는 static(정적) 메소드를 데코레이터로 정의 할 수 있는데 @staticmethod, @classmethod를 사용한다. 이 둘의 차이점은 classmethod의 경우는 첫번째 인수가 클래스를 지정하는데 반해 staticmethod는 이런 룰이 없다. 이로 인해 상속받는 경우 동작이 달라진다. class foo(object): name = 'foo' @staticmethod def get_name_static(): print foo.name @classmethod def get_name_class(cls): print cls.name 실행 결과는 아래와 같다.>>> foo.get_name_static..
참조: http://hamait.tistory.com/827 Python에서는 Protected와 Private에 대한 개념이 없다. 그래서 __변수명(private), _변수명(protected)와 같은 방식으로 개발자끼리 약속하여 변수명을 지정한다. 그러다보니 변수값 설정할 때, 특정 범위를 넘어가면 에러가 발생하도록 처리할 수 없을 것이다. 이를 구현하기 위한 것이 @Property 이다. 아래와 같은 방식으로 구현하여 특정 변수값에 제한을 둔다.class Celsius: def __init__(self): pass def to_fahrenheit(self): return (self._temperature * 1.8) + 32 @property def temperature(self): print("..
퍼옴 : http://jhproject.tistory.com/109 다른사람들이 작성한 python 코드를 보다보면*args, **kwargs 를 심심치 않게 본다. 그냥 막연하게 "어떤 파라미터를 몇개를 받을지 모르는 경우 사용한다" 라고 알고 있었지만자세히 설명한 예 가 있어서 소개한다. *args- 파라미터를 몇개를 받을지 모르는 경우 사용한다. args 는 튜플 형태로 전달된다.예)? 1234567891011def print_param(*args): print args for p in args: print p print_param('a', 'b', 'c', 'd') #('a', 'b', 'c', 'd')#a#b#c#d **kwargs- 파라미터 명을 같이 보낼 수 있다. kwargs는 딕셔너리 형..
참조: https://wikidocs.net/17445) 클래스 변수와 인스턴스 변수6.4절에서는 클래스의 네임스페이스와 인스턴스의 네임스페이스, 그리고 그 둘 사이의 관계에 대해 배웠습니다. 이번 절에서는 초보자들이 많이 어려워하는 개념 중 하나인 클래스 변수(class variable)와 인스턴스 변수(instance variable)에 대해 살펴보겠습니다.다음은 은행 계좌를 클래스로 표현한 것입니다. Account 클래스에는 생성자와 소멸자가 있습니다. 생성자 (__init__)가 클래스의 인스턴스가 생성될 때 자동으로 호출되는 함수라면 소멸자 (__del__)는 클래스의 인스턴스가 소멸될 때 자동으로 호출되는 함수입니다.>>> class Account: num_accounts = 0 def __i..
참조: https://wikidocs.net/17434) 클래스 네임스페이스클래스와 인스턴스의 차이를 정확히 이해하는 것은 매우 중요합니다. 이를 위해서는 먼저 네임스페이스라는 개념을 알아야 합니다. 네임스페이스라는 것은 변수가 객체를 바인딩할 때 그 둘 사이의 관계를 저장하고 있는 공간을 의미합니다. 예를 들어, 'a = 2'라고 했을 때 a라는 변수가 2라는 객체가 저장된 주소를 가지고 있는데 그러한 연결 관계가 저장된 공간이 바로 네임스페이스입니다.파이썬의 클래스는 새로운 타입(객체)을 정의하기 위해 사용되며, 모듈과 마찬가지로 하나의 네임스페이스를 가집니다. 먼저 Stock 클래스를 정의해봅시다.>>> class Stock: market = "kospi" >>> 파이썬 IDLE에서 dir() 내장..
참조: https://wikidocs.net/33[스레드를 다루는 threading 모듈]컴퓨터에서 동작하고 있는 프로그램을 프로세스(Process)라고 한다. 보통 1개의 프로세스는 1가지 일만 하지만, 스레드를 이용하면 한 프로세스 내에서 2가지 또는 그 이상의 일을 동시에 수행하게 할 수 있다. 간단한 예제로 설명을 대신하겠다.import threading import time def say(msg): while True: time.sleep(1) print(msg) for msg in ['you', 'need', 'python']: t = threading.Thread(target=say, args=(msg,)) t.daemon = True t.start() for i in range(100): ..
참조: https://wikidocs.net/32 evaleval(expression)은 실행 가능한 문자열(1+2, 'hi' + 'a' 같은 것)을 입력으로 받아 문자열을 실행한 결과값을 리턴하는 함수이다.>>> eval('1+2') 3 >>> eval("'hi' + 'a'") 'hia' >>> eval('divmod(4, 3)') (1, 1) 보통 eval은 입력받은 문자열로 파이썬 함수나 클래스를 동적으로 실행하고 싶은 경우에 사용된다.filterfilter란 무엇인가를 걸러낸다는 뜻으로, filter 함수도 동일한 의미를 가진다. filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형을 받는다. 그리고 두 번째 인수인 반복 가능한 자료형 요소..
오류 만들기프로그램 수행 도중 특수한 경우에만 예외처리를 하기 위해서 종종 오류를 만들어서 사용하게 된다.직접 오류를 만들어 보자. 오류는 다음과 같이 파이썬 내장 클래스인 Exception클래스를 상속하여 만들 수 있다.class MyError(Exception): pass 그리고 별명을 출력해 주는 함수를 다음과 같이 작성해 보자.def say_nick(nick): if nick == '바보': raise MyError() print(nick) 그리고 다음과 같이 say_nick 함수를 호출 해 보자.say_nick("천사") say_nick("바보") 실행 해 보면 다음과 같이 "천사"가 한번 출력된 후 MyError가 발생하는 것을 알 수 있다.천사 Traceback (most recent cal..
참조: https://wikidocs.net/141805-3 패키지패키지(Packages)는 도트(.)를 이용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 예를 들어 모듈명이 A.B인 경우 A는 패키지명이 되고 B는 A 패키지의 B 모듈이 된다.파이썬 패키지는 디렉터리와 파이썬 모듈로 이루어지며 구조는 다음과 같다.가상의 game 패키지 예game/ __init__.py sound/ __init__.py echo.py wav.py graphic/ __init__.py screen.py render.py play/ __init__.py run.py test.py game, sound, graphic, play는 디렉터리명이고 .py 확장자를 가지는 파일은 파이썬 모듈이다. game..
- 모두의딥러닝
- javascript
- API
- BigData
- tensorflow
- Configuration
- web
- 중앙정보처리학원
- Maven
- 머신러닝
- 파이썬
- serverless
- AI
- Error
- Docker
- 텐서플로우
- 점프투파이썬
- TDD
- NIO
- memory
- mysql
- executor
- ML
- spring
- mybatis
- Java
- Gradle
- AWS
- spark
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |