728x90
반응형

1. 우선 node.js를 깔은 후 

 

콘다환경이라면 

conda install -c conda-forge nodejs

2. ipywidgets 설치

conda install -c conda-forge ipywidgets

아래글 참조

 

[jupyter lab 3] 주피터 랩 3 tqdm, update jupyter and ipywidgets.

주피터 랩 3.0 - jupyter lab 3.0 주피터 랩 3.0 에서는 아래와 같이 해야 한다. 1. nodejs 가 설치 안되 있으면 설치해야 한다. 2. importerror: iprogress not found. please update jupyter and ipywidgets. 임..

uwgdqo.tistory.com


콘다 환경이라면 conda install 이용

아니면 pip install 하세요

주피터 랩 3 익스텐션 탭에서 바로 설치시 실행이 안될 수도 있습니다. 

 

1. 헤딩 접기 (Collapsible Headings)

aquirdTurtle/Collapsible_Headings: Implements Collapsible Headers for Jupyter Lab Notebooks (github.com)

 

aquirdTurtle/Collapsible_Headings

Implements Collapsible Headers for Jupyter Lab Notebooks - aquirdTurtle/Collapsible_Headings

github.com

pip 설치 

pip install aquirdturtle_collapsible_headings

 

 

2. 리소스 모니터 (Resource Monitor)

jtpio/jupyterlab-system-monitor: JupyterLab extension to display system metrics (github.com)

 

jtpio/jupyterlab-system-monitor

JupyterLab extension to display system metrics. Contribute to jtpio/jupyterlab-system-monitor development by creating an account on GitHub.

github.com

상단에 (Mem 197MB) 사용중 메모리를 볼 수 있다

pip install jupyterlab-system-monitor
conda install -c conda-forge jupyterlab-system-monitor

3. 변수 인스펙터(variable inspector)

lckr/jupyterlab-variableInspector: Variable Inspector extension for Jupyterlab (github.com)

 

lckr/jupyterlab-variableInspector

Variable Inspector extension for Jupyterlab. Contribute to lckr/jupyterlab-variableInspector development by creating an account on GitHub.

github.com

오른쪽 클릭을 하면 Open Variable inspector 이 생긴다

pip install lckr-jupyterlab-variableinspector
conda install -c conda-forge jupyterlab-variableinspector

 

반응형
728x90
반응형

주피터 랩 3.0  - jupyter lab 3.0 

주피터 랩 3.0 에서는 아래와 같이 해야 한다.

 

1. nodejs 가 설치 안되 있으면 설치해야 한다.

 

 

2. importerror: iprogress not found. please update jupyter and ipywidgets.

임포트 에러가 떠서 아이파이위젯을 업데이트 하라고 나올 시.

conda install -n base -c conda-forge jupyterlab_widgets
conda install -n 자신의가상환경_이름 -c conda-forge ipywidgets

3. 주피터 종료후 다시 킨다.

반응형
728x90
반응형

stackoverflow.com/questions/19629682/ordereddict-vs-defaultdict-vs-dict

 

OrderedDict vs defaultdict vs dict

In python's library, we now have two Python Implementation of dictionaries which subclasses dict over and above the native dict type. Python's advocates have always preferred to defaultdict over ...

stackoverflow.com

 

반응형

'python' 카테고리의 다른 글

[파이썬 Python] 로깅 logging  (0) 2020.12.24
[파이썬 python] 딕셔너리 ditionary  (0) 2020.12.16
[파이참 PyCharm] 단축키  (0) 2020.12.15
[파이썬 python] print(), sep='', end=''  (0) 2020.12.09
plt.plot 한글 폰트 깨짐 현상  (1) 2020.08.03
728x90
반응형

 

logging


1. 사용 이유

보통 처음 개발을 시작한다면 print 함수를 쓸것이다.

logging 모듈은 파이썬 자체에 내장되어 있는 모듈로 사용이 간편하고 강력하다.

사용방법은 4번 부터 보면 된다.


 

2. level

logging 모듈은  중요도를 level로 구분한다.

  • DEBUG - 간단한 문제
  • INFO - 확인 메시지, 정보
  • WARNING - 잘 작동은 하나 예상치 못한 일이 발생 했거나 예측될때
  • ERROR - 큰 문제로 몇몇 기능을 수행하지 못할때 
  • CRITICAL - 작동이 불가능한 수준의 심각한 에러

3. logging flow

logger, handler, filter, formatter 가 있다. 

 

Logger: 어플리케이션 코드가 직접 사용할 수 있는 인터페이스를 제공.
Handler: logger에 의해 만들어진 log를 적합한 위치로 보낸다.
Filter: 어떤 log가 출력되어야 하는지를 결정.
Formatter: log의 최종 출력되는 레이아웃을 결정.


 


4. 사용법

1. 로깅을 위해 필요한 모듈을 import 한다.

import logging

2. 인스턴스(instance) logger를 생성한다.

logger = logging.getLogger('name')

3. logger level 부여

 

이중 원하는 수준의 level로 써주면 된다.

DEBUG로 설정하면 그아래 모든 level이 출력된다.

INFO로 설정하면 DEBUG를 제외한 그아래 모든 level이 출력된다.

logger.setLevel(logging.DEBUG)
logger.setLevel(logging.INFO)
logger.setLevel(logging.WARNIG)
logger.setLevel(logging.ERROR)
logger.setLevel(logging.CRITICAL)

5. handler 과 formatter

formatter

log 가 어떠한 형식으로 찍힐 것인지 포맷을 결정한다.

원하는 형식으로 짜면된다.

logging.Formatter(
  fmt = None,     # 메시지 출력 형태. None일 경우 raw 메시지를 출력.
  datefmt = None, # 날짜 출력 형태. None일 경우 '%Y-%m-%d %H:%M:%S'.
  style = '%'     # '%', '{', '$' 중 하나. `fmt`의 style을 결정.
)

formatter = logging.Formatter(fmt = '%(asctime)s %(levelname)s %(message)s', 
                              datefmt = '%Y-%m-%d %H:%M:%S')

 

속성이름 format 설명
created %(created)f 시간 표시
filename %(filename)s pathname 의 file이름 부분 
funcName %(funcName)s logging call 포함하는 fuction의 이름
levelname %(levelname)s logging level
(ex.DEBUG)
lineno %(lineno)d logging call 발생한 코드의 line number
module %(module)s file module 이름
message %(message)s 메시지
name %(name)s logger 이름
pathname %(pathname)s 파일 path
thread %(thread)d thread ID
threadName %(threadName)s thread 이름

 

handler

# 오늘 날짜를 찍어주어 로그 파일명을 오늘 날짜로 만들어 주기 위해
now = datetime.datetime.now().isoformat()[:10]
logfile_name = f'{now}.log'

# formatter 객체 생성
formatter = logging.Formatter(fmt="%(asctime)s | %(levelname)s | %(message)s")

# handler 객체 생성
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler(filename=logfile_name)

# handler에 level 설정
stream_handler.setLevel(logging.INFO)
file_handler.setLevel(logging.DEBUG)

# handler에 format 설정
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

logger에 생성한 handler 추가하기

logger.addHandler(stream_handler)
logger.addHandler(file_handler)

 

 

 

Logging Cookbook — Python 3.9.1 documentation

Sometimes you want logging output to contain contextual information in addition to the parameters passed to the logging call. For example, in a networked application, it may be desirable to log client-specific information in the log (e.g. remote client’s

docs.python.org

 

 

반응형

'python' 카테고리의 다른 글

OrderedDict vs defaultdict vs dict  (1) 2021.01.03
[파이썬 python] 딕셔너리 ditionary  (0) 2020.12.16
[파이참 PyCharm] 단축키  (0) 2020.12.15
[파이썬 python] print(), sep='', end=''  (0) 2020.12.09
plt.plot 한글 폰트 깨짐 현상  (1) 2020.08.03
728x90
반응형

1. 모듈 

module


모듈은 여러 기능을 모아둔 파이썬 파일이다.

 

namespace

 

스탠다드 라이브러리

자료형 int float string

print dir 내장함수

유용한 스탠다드 모듈 math, randon, datetime, os, os.path, re, pickle, json, copy 

 

 

 

 

스크립트 vs 모듈


보통 스크립트모듈로 파일을 따로 만들어 쓴다

  • 모듈: 필요한 변수 함수를 정의 모아놓은 파일
  • 스크립트 : 모듈을 import로 가져와서 실행 용도 파일

 

__name__


  • __name__ : 모듈의 이름을 저장해 놓은 변수
  • __main__ : 실행한 파일의 이름은 __name__ = __main__이다. 
    import 된파일은  __name__  =  원래 모듈이름 으로 설정 된다.

if __name__ == '__main__': 을 사용하면  조건문 안에 있는 코드는 파일이 직접실행될 떄만 실행된다.

 

 

 


2. 패키지

package


관련된 여러개의 모듈을 모아 하나의 패키지라 한다.

새로운 폴더를 만들고 폴더안에 __init__.py 파일을 만들어 주면 된다.

파이참(PyCharm)에서는 new -> python package 를 선택하면 되는데 __init__.py 를 자동으로 만들어 준다.

*3.3 이전 버전에서는 필수 3.3 이상에서는 init 파일이 필수가 아니다.

 

사용방법

import packagename.modulename

import packagename.modulename as name

from packagename.modulename import def

from packagename import module

import packagename  ->  패키지 안에 내용들은 import 되지 않는다. 안에 모듈도 같이 import 하려면 init 파일을 사용해야 한다.

 

 

 

__init__.py


import package 를 하면 __init__.py가 먼저 실행된다.

 

__init__.py 파일에

from package명.파일명 import 함수명, 함수명

실행(run) 파일에서 package.file.function() 을써야하는데 더 짧게 package.function() 형태로 쓸수있다.

import package명

package명.함수명()

 

 

상수 constant


각 모듈에서 정의하지 않고 패키지에서 한번만 정의해 준다.

  • 한번만 정의해 주려면 __init__.py 파일에 정의해 주면 된다.
  • __init__.py 에 정의되면 패키지 밖에서도 사용할수 있다.
# 상수를 직접 임포트
from package import constant

constant


or

# 패키지를 임포트
import package

package.constant

 

__all__ 특수변수


* import * 는 네임스페이스를 완벽히 이해했을 때 사용하기를 권장한다.

from package import *

아무 모듈도 import 되지 않는다.

 

 

 

__init__.py 에 __all__ = ['파일명(모듈module)','파일명(모듈module)']  하면 실행 된다.

__all__ = ['파일명','파일명']

 

 

모듈module에서도 사용가능하다. 

__all__ = ['consant', 'function' ]

 

 

3. 서브 패키지

subpackage


사용방법

subpackage1 __init__.py 에 아무것도 안 적었을 시

from package.subpackage1.module import function

from package.subpackage1 import module

import package.subpackage1.module

 

subpackage2 __init__.py 에

from package.subpackage2 import module

from package import subpackage2

import package.subpackage2

 

 

 

절대경로 상대경로


절대경로

from package.subpackage1.module import function

 

상대경로

from .module import function

현재 패키지에서  fuction을 가저와라

 

현재 subpackage1.

from ..subpackage2.module import function

 

 

 

 

 

 

반응형
728x90
반응형

*티스토리 코드블럭이 이상해서  code block indentation이 밀려있다

객체 지향 프로그래밍의 4가지


  • 추상화(Abstraction)
  • 캡슐화(Encapsulation)
  • 상속(Inheritance)
  • 다형성(Polymorphism)

 

 

1. 추상화

Abstraction


  • 클래스나 함수의 기능, 설명을 (""" or ''')사이에 주석처럼 적어주는 것이다.
  • 보통 """ 쌍따옴표 3개를 사용한다.
  • help(클래스 이름) 을 통해 도큐멘테이션(작성한 docstring)을 모아서 볼수 있다.
classs xxx:
	"""docstring"""
	def yyy:
    		"""docstring"""

python 3.5 부터 type hinting 가능하다.

def market_cap(self, price: int, number: int): -> int:
	return price*number

 

 

2. 캡슐화

Encapsulation


  • 객체 내용을 외부로부터 엑세스 차단
  • 객체를 getter setter 메소드를 통해서만 접근 가능하게 한다.
    (getter 는 값을 받아온다 / setter 는 값을 설정한다.)

변수나 함수 앞에 언더바 두개(__) 를 붙이면 클래스 밖에서 호출이 불가능하다.

__market_cap

__price

 

  • __ 를 붙인다고 파이썬에서 완벽한 캡슐화가 되지 않는다. 언더바(밑줄) 두개 붙인 메소드는 새로운 이름을 갖게 되는데, 그 새 이름으로 클래스 밖에서 접근이 가능하다.
  • print(dir(인스턴스)) 로 확인 가능하다.
  • 파이썬에서는 _ 언더바(밑줄) 1개를 붙여 클래스 외부에서 사용하지 말라는 경고표시를 약속으로 한다.

 

3. 상속

Inheritance


 

 

 

  • 자식 class 에서 중복되는(공통부문) 코드를 부모 class 에 한번만 작성 할 수 있다.
  • class이름.mro() 로 상속하는 부모 클래스를 볼 수 있다. mro 에 나오는 순서대로 탐색을 한다.

 

 

 

 

 

 

 

 

class Market:
	def __init__(self):
    	pass
        
    def market_cap:
    	pass

class Kospi(Market):
	pass
#상속할 부모 class Market을 () 사이에 넣는다 

티스토리 코드블럭이 이상해서  indentation이 밀려있다

 

 

 

오버라이딩


class Market:
	def __init__(self, name, price):
    	self.name = name
        self.price = price
        
   	def market_cap:
    	pass

class Kospi(Market):
	def __init__(self, name, price, number_of_share):
    	self.name = name
        self.price = price
        self.num_of_share = number_of_share

#상속할 부모 class Market을 () 사이에 넣는다 

super().__init__ 으로 중복되는 것을 줄일 수 있다

class Market:
	def __init__(self, name, price):
    	self.name = name
        self.price = price
        
   	def market_cap:
    	pass

class Kospi(Market):
	def __init__(self, name, price, number_of_share):
    	super().__init__(name, price)
        self.num_of_share = number_of_share

#상속할 부모 class Market을 () 사이에 넣는다 

다중상속


부모 클래스(parent class)를 참조할 때의 애매함 때문에 다중 상속을 되도록이면 하지 않는 것이 좋다.

class KospiKosdq(Kospi, Kosdaq)

    def __init_(slef, buy_kosp, buy_kosdaq )

        Kospi.__init__(self, buy_kospi)

        Kosdaq.__init__(self, buy_kosdaq)

 

 

 

 

4. 다형성

Polymorphism


하나의 변수가 서로다른 클래스 A, B가 인스턴스를 가르킬수 있는 성질. 

반응형

+ Recent posts