프로그래밍 문법 100

파이참 모듈 설치후에도 ModuleNotFoundError: No module named 에러발생시 해결법

특정 모듈 설치 후에도 ModuleNotFoundError: No module named 에러가 발생하는 경우가 있다. 이런 경우 모듈이 설치된 파이선인터프리터와, 현재 실행되고있는 파이썬 인터프리터가 다른 경우가 원인일 때가 있다. 즉 모듈이 설치된 파이선 인터프리터를 현재 파일의 인터프리터로 설정하면 문제가 해결된다. 따라서 1. 모듈이 설치된 파이썬 인터프리터 2. 현재실행되고있는 파이썬 인터프리터 위 1,2를 일치시키면 문제가 해결된다.

이벤트 발생에 따른 처리

HTML코드 this is h1 1 this is h1 2 this is h1 3 click to change color click to change class mouse over this is h2 this is h3 this is h2(out of div) JS코드 // -------------------------------[이벤트동작]------------------------------- // 1. 클릭으로 색깔 바꾸기 function handleTitleClickColor() { // element가 블루면 토마토, 토마토면 블루로 const nowColor = changeColorElement.style.color; let newColor; if (nowColor==="blue") { ne..

HTML에서 작성한 내용을 JS에서 수정하기

HTML코드 this is h1 1 this is h1 2 this is h1 3 click to change color click to change class mouse over this is h2 this is h3 this is h2(out of div) JS코드 // -------------------------------[불러오기]------------------------------- // 1. id로 불러오기 const callById = document.getElementById("line1"); console.log(callById); console.log("className : ",callById.className); console.log("innerText : ",callById.in..

함수 파라미터를 변수로 묶어서 넣기 (*args, **kwargs)

함수의 파라미터를 변수로 만들어주는 것 *args, **kwargs 함수의 파라미터 값이 매우 많은 경우가 있다. (catboost의 예) 이 경우 함수의 파라미터값을 줄줄 써주어야 하는 불편함이 있다. 이를 방지하기 위해 변수에 함수 파라미터를 넣고, 해당 변수만 함수의 input값으로 주면 코드를 깔끔하게 할 수 있다. 이를 가능하게 해주는 것이 *args와 **kwargs이다. 먼저 파라미터 a,b,c가 있는 다음과 같은 함수가 있다. def func(a,b,c): print("a : ",a) print("b : ",b) print("c : ",c) 이를 *args와 **kwargs *args 파라미터들을 튜플형태로 묶어준다. 파라미터 순서에 맞게 튜플 값들의 순서를 맞춰주어야 한다. input_a..

파이썬 함수주석(Function Annotations), (->, : , __anotations__)

파이썬 Function Annotations 파이썬에서 함수를 구현할때, input과 output의 type을 주석으로서 명시해줄 수 있다. 다음과 같이 ":" 과 "->"를 하고 타입을 명시해준다. def f(a:str, b:int, c:bool)->list: 이는 a는 string타입, b는 int타입, c는 bool타입, 그리고 함수 리턴값은 list타입을 의미한다. 예시 1. code def f(a:str, b:int, c:bool)->list: print("a의 데이터타입은 string : ",a) print("b의 데이터타입은 int : ",b) print("c의 데이터타입은 bool : ",c) return [a,b,c] return_value = f("hello",10,True) print..

파이썬 시간 datetime 클래스

함수 의미 timetype.strftime(“%Y%m%d”) time 타입의 객체를 “20210510” 형식으로 바꿈 timetype-timedelta(days=1) 하루 전으로 시간을 옮김 datetime.datetime.strptime(“2021-07-19”,”%Y%m%d”) 문자열을 time 타입으로 (2021-07-19 00:00:00) dateobj.date() 분단위 까지 있는 시간타입을 일단위까지 만들어줌 (2021-07-19 00:00:00 => 2021-07-19 ) dateobj.weekday() 날짜타입의 요일을 반환 (월요일:0, 화요일:1 ...일요일:6)

파이썬 매직메소드

메직메소드란? 특정 클래스의 객체가 builtin 함수(혹은 사칙연산)의 input값으로 사용될 때 그 output값을 정의하는것. 예를 들어 string의 객체인 a,b가 아래와 같이 있다고 하자. a="hi" b="bye" 이때 print()를 사용하면(print(a),print(b)) hi bye 위와 같이 나오고 a+b를 하면 hi bye 위와같은 결과를 얻는다. 그렇다면 우리가 직접 클래스를 정의하고 그 클래스의 객체가 print, +, add등의 built in 함수에 사용되었을 때 결과값을 정의해보자. 클래스 정의 및 매직메소드 정의 class Myclass: def __init__(self,name,tall): self.name=name self.tall=tall def __repr__(s..

logging이란?

logging이란? logging은 오류의 발생위치 및 종류를 확인하는 도구이다. 사용자별로 필요한 오류의 종류에 맞게 logging의 객체를 만들고 확인하고 싶은 위치에 logging코드를 추가한다. 그럼 해당 위치에서 사용자가 지정한 오류를 확인할 수 있다. 아래의 예시와 같이 쓴다. (example) 전체 flow 먼저 전체 플로우를 미리 보면 아래와 같다 아래에서 구체적인 과정을 설명한다. 사진에 보이는 순서와 번호대로 매핑했다. logging 과정 1. logging 객체 생성 logging의 객체를 생성하고 레벨을 설정한다. 레벨은 아래에서 설명한다. #1.logger 객체 logger = logging.getLogger("brave_log") #객체 생성 logger.setLevel(logg..

직접만든 파이썬 package, module 불러오기

설명 파이참 환경에서 직접 만든 package, module을 import해서 쓰는법을 알아본다. module : 함수, 변수들로 구성된 단위 package : 여러 모듈들로 구성된 단위 디렉토리 상태 "test"라는 폴더에 파이참으로 프로젝트를 만들고 그 아래 다음과 같이 디렉토리를 구성하였다. 함수는 파일 이름에 f를 붙였다 그리고 test.py에서 각 모듈 및 패키지를 import한다 같은디렉토리에 있는 모듈 임포트 같은 디렉토리에 있는 모듈을 임포트 할때는 다음과 같이 한다 test.py from plusminus import plusf,minusf print(plusf(3,4)) print(minusf(3,4)) 같은디렉토리에 있는 폴더(패키지) 임포트 같은 디렉토리에 있는 폴더(패키지)를 임포..

aws s3 스토리지에서 파일 다운로드, 열기

1. 파일 다운로드 s3.download_file('버켓이름','버켓하위 경로를 포함한 s3속 파일이름',"로컬에 저장할때 파일이름") * 예시 import boto3 s3=boto3.client('s3') s3.download_file('presentation-storage','UserPowerpoint/test6.txt',"down_file.txt") 2. 저장안하고 바로 열기 s3.Object("버켓이름","버켓 하위경로 포함한 파일이름") * 예시 s3=boto3.resource('s3') obj=s3.Object('presentation-storage','UserPowerpoint/test6.txt') myBody=obj.get()['Body'].read() print(type(myBody)) ..

내가만든 모듈 import하기

1. 개요 내가 만든 모듈을 import해서 쓰는 방법이다. 같은 디렉토리안에 넣고, a.py모듈을 b.py에서 쓰고싶으면 b.py에서 import a를 하면된다. 즉 아래와 같이 쓸 수 있다. # b.py파일 import a 2. 예시 - 디렉토리 구성 basic_nodes라는 모듈을 만들고, 이를 test2에서 불러 오려고 한다. 디렉토리 구성은 아래와 같다. - basic_node.py import numpy as np class mean_node: def __init__(self): self._x=None self._z=None def forward(self, x): self._x = x self._z = np.mean(self._x) return self._z def backward(self, ..

중복순열 product

파이썬에서 product라는 모듈을 이용하여 종복순열을 구현할 수 있다. 1. 모듈 불러오기 from itertools import product 2. 사용법 (1) 예시1 a=list(product([0,1,2],[0,1,2])) print(a) [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] (2) 예시2 *같은 모양은 repeat 파라미터를 이용할 수도 있다. a=list(product([0,1,2],repeat=2)) print(a) [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] (3) 예시3 a=list(product([0,1,2]..

[판다스함수] qcut과 cut함수

qcut은 데이터의 개수를 기준으로 데이터를 나누고 cut은 데이터의 수치를 기준을 데이터를 나눈다. 아래에 코드와 자세한 예시가 있다. 실제 데이터 예시는 타이타닉 네모카드 하나가 데이터이고, 적힌 숫자가 그 데이터의 값. 1. qcut 데이터를 나누고싶은 구역에 모두 똑같은 개수가 들어가도록 나눈다 (한구역에 7개씩) pd.qcut(temp['Age'], 10) 2. cut 데이터를 데이터값을 기준으로 일정하게 자른다.(3씩) pd.cut(temp['Age'], 10)

구글드라이브에 있는 파일 코랩으로 불러오기

구글 드라이브에 파일을 저장해놓고, 코랩에서 코드를 통해 파일을 읽어올 수 있다.내 구글 드라이브에 접근하기 위해 코랩에서 구글 드라이브 라이브러리를 다운받아야 한다. (1) 아래의 코드를 코랩에서 실행시킨다.from google.colab import drive drive.mount('/gdrive', force_remount=True) (2) 구글드라이브를 연동할 계정 인증하기(1)을 실행시키면 빈칸과 링크가 뜨고 그 빈칸에 인증코드를 입력하라는 안내문이나온다. 링크를 타고들어가서 코랩과 연동 할 구글계정으로 로그인 하면 인증코드가 나온다그 코드를 복사해서 빈칸에 붙여넣기하면 아래와 같이 마운트된다. (3) 드라이브의 경로드라이브의 경로는 '/gdrive/My Drive/' 부터 시작이다.여기서 da..