파이썬 10

Q. 파이썬 비공개 패키지를 만들고 다른 프로젝트에서 쓰는 방법은?

언제 비공개 패키지가 필요한가?팀 내에서 여러 저장소에서 사용하는 공통 모듈들이 있다. 공통 모듈을 한 저장소에 모아두고 오픈 소스로 공개하면 쉽게 쓸 수 있다. 하지만 보안상 이유로 공개할 수 없다면 비공개 패키지를 사용하게 된다. 1. Github에서 비공개 저장소 만들기비공개 저장소를 하나 만들자. private-package로 하나 만들었다. 이름은 원하는대로 만들면 된다. 실습을 위해서 아주 간단한 더하기 메소드만 갖고 있는 Calculator 클래스를 하나 추가하자. class Calculator:    def sum(self, a, b):        return a + b pyproject.toml은 아래처럼 간단히 입력하자. name은 패키지명인 calculator와 동일하게 적어야 한다..

Q. 파이썬 타임존 유명 pytz 팩키지의 서울 타임존이 LMT+08:28:00으로 나오는 이유는?

아래처럼 코드를 실행해보면 from pytz import timezone seoul = timezone('Asia/Seoul') seoul 엉뚱한 결과가 나온다. LMT+8:28:00 STD 아니 서울은 시차가 +9시간인데 왜 +8:30도 아니고 +8:28일까? A. 대한제국 이전을 기준으로 한 것이다. 엄청 많이 쓰는 pytz. 공식 파이썬 팩키지 같지만 아니다. 그냥 개인 프로젝트다. pytz 깃허브 들어가보면 생각보다 별 숫자도 적어서 놀라게 된다. 바로 별을 눌렀다! pytz는 Time Zone Database를 사용하고 있다. 여기 사이트 가서 데이터를 받아서 압축을 풀어서 asia를 열어보자. 아래 같은 정보를 확인할 수 있다. # ZoneNAMESTDOFFRULESFORMAT[UNTIL] Z..

Q. Python에서 for문을 돌면서 실행하는 코드를 한 줄로 작성할 수 있을까?

A. 가능하다. 변수에 저장하지 않는 코드라면. 이렇게 두 줄인 코드를 for num in range(10): print(num) 아래처럼 한 줄로 적을 수 있다. [print(n) for n in range(10)] 딱히 리스트를 만들 것은 아니지만 [ ]로 감싸주면 실행가능하다! [ ]를 없애면? 당연히 구문syntax 에러가 난다. 함수를 선언해서 할 수도 있다. 아래처럼 하는 것도 가능하다. def print_num(num): print(num) [print_num(n) for n in range(10)] 변수에 할당하는 건 안 된다. 구문 에러가 발생한다. 아래처럼 하고 싶을 수도 있지만 안 된다. sum = 0 [sum += n for n in range(10)] 뭔가 할당하고 저장하기만 하고..

Q. 파이썬에서 객체에 새로운 속성이 임의로 추가되지 않도록 하고 싶다면?

A. pydantic을 사용하면 된다. from pydantic import BaseModel class Person(BaseModel): name: str = '' gender: str = '' if __name__ == '__main__': john = Person() john.age = 23 print(john.age) pydantic을 사용하면 아래처럼 에러가 난다. john.age = 23 File "pydantic/main.py", line 357, in pydantic.main.BaseModel.__setattr__ ValueError: "Person" object has no field "age" 같은 코드에서 pydantic BaseModel만 제거하면 잘 출력된다. 파이썬 객체의 경우 ..

Q. 파이썬으로 개발할 때 타입 힌트type hints를 쓰면 좋은 점은?

A. 개발자 실수로 인한 오류가 확 줄어든다! 파이썬은 동적 타입 언어Dynamically Typed Language 그때 그때 알아서 타입이 바뀌는 걸 동적 타입 언어라고 한다. 정적 타입 언어Statically Typed Language인 C나 자바는 변수를 선언할 때 타입부터 선언해야 한다. 하지만 파이썬은 동적 타입 언어니까 변수를 선언할 때 타입을 선언하지 않는다. message = "Hello World!" print(message) message = 7 print(message) 위처럼 그냥 변수 = 문자열 하면 해당 변수에는 문자열이 담긴다. 그 다음에 숫자를 변수에 저장해도 전혀 문제 없이 잘 작동한다. 웹 개발 때 많이 쓰는 자바스크립트도 동적 타입 언어다. 동적 타입 언어 문제 알아서..

Q. 아나콘다 설치 없이 주피터 노트북 실행시키는 방법은?

A. pip install notebook으로 설치, jupyter notebook 실행하면 된다. 주피터 노트북만 필요하다면 굳이 아나콘다까지 설치할 필요가 없다. 맥의 경우에는 아래처럼 하면 된다. $ mkdir notebook $ cd notebook $ python3 -m venv venv $ source ./venv/bin/activate $ pip install notebook $ jupyter notebook 위 예시는 가상환경 만드는 것부터 적어본 것이고, 그냥 pip install notebook부터 해도 된다. 주피터 노트북이 잘 실행되는 걸 볼 수 있다. 노트북 화면이 보인다. 실행해보자. 정상적으로 뜨는 것을 볼 수 있다. 이렇게 했을 때 장점은 각 프로젝트마다 팩키지 관리를 할 수..

Q. 파이썬에서 데이터를 객체로 맵핑하는 방법은?

A. 여러가지 방법으로 가능하다. 기본 __init__을 활용할 수도 있고, dataclasses, pydantic 등을 활용해서 할 수도 있다. 데이터를 받아서 데이터 모델 클래스의 객체object로 맵핑mapping하는 경우는 정말 많이 필요하다. 그렇지 않으면 일일이 변수로 만들거나 딕셔너리로 접근해야 하는데 너무 번거롭기 때문이다. 데이터를 객체로 만들어주는 팩키지나 라이브러리를 보통 객체 맵퍼 Object Mapper라고 부른다. 예를 들면 자바의 Jackson 같은 경우다. 파이썬에서는 어떻게 객체 맵핑을 할 수 있을까. 1. 가장 기본적인 방법 __init__ 을 활용하는 방법이다. class User: def __init__(self, name, phone, birthday): self.n..

Q. 파이썬에서 urlencoded된 'key1=value1&key2=value2' 형태를 딕셔너리로 바꾸는 법은?

A. parse_qsl을 이용한다. 직접 구현할 수도 있지만 사람들이 많이 쓰는 라이브러리가 있다면 그냥 쓰는 게 좋다. 많이 쓰는 라이버리르는 예외처리가 잘 되어 있으니까. POST 방식으로 request.body 값을 가져오면 urlencoded된 'key1=value1&key2=value2' 형태다. 키로 값을 가져올 수 있게 딕셔너리로 바꾸면 사용하기 편해진다. parse_qsl을 활용하는 법 from urllib.parse import parse_qsl data = "name=ted&age=40" data_dict = dict(parse_qsl(data)) data_dict 결과 {'name': 'ted', 'age': '40'} parse_qs 활용하는 법 from urllib.parse im..

파이썬 플라스크flask 로컬에서는 이미지가 뜨는데, 구글 앱엔진app engine에서 이미지가 안 뜨는 이유는?

A. 내 경우는 이미지 확장자 대소문자 때문이었다. 로컬에서 테스트할 때는 대소문자 구분 없이 잘 이미지가 나왔다. 이미지 경로에 파일 이름을 1.jpg로 적어도 1.JPG 파일을 잘 불러 왔다. 그래서 gcloud app deploy로 구글 앱엔진에 배포를 했더니 이미지가 뜨지 않았다. 원인이 무엇인가 이것저것 살펴보니 확장자 때문이었다. 파일 이름을 1.jpg로 소문자로 적은 경우 업로드한 파일 이름도 1.JPG가 아니라 1.jpg로 맞춰주니 정상 작동했다. 일관되게 소문자로 처리해야겠다.

python파이썬 독학 프로그램 추천, PyCharm Edu

PyCharm Edu 내려받기PyCharm Edu 이전 버전 받기Version 2019.3 버전 추천한다.저 버전에서 설치 에러가 발생하면 더 이전 버전을 받으면 된다. 새롭게 유료화로 바뀌는 중인 거 같다.최신 버전을 내려 받으면 로그인해야 학습을 할 수 있다.hyperskill.org로 자동 연결되고, 여러 코스를 선택할 수 있다.자바, 파이썬, HTML, CSS  등 코스가 많아서 좋은데, 일단 무료로 써보고 좋으면 유료까지 해도 좋을 거 같다.  영어라서 아쉽긴 하지만 직접 코드를 입력해서 배울 수 있어서 좋다. PyCharm Edu 설치PyCharm Edu 설치하면 다음과 같은 화면이 나온다.  Learn을 누른다. Browse Course Introduction to Python을 선택Sele..