Python 43

[Flask] Decorators?

플라스크는 데코레이터(Decorators) 기능이 있는데 특정 함수가 개발자가 원하는 형태로 동작하게 만들어주는 기능이다. 하단의 예시는 Method Decorators(메서드 데코레이터)로 출력값을 JSON 형식으로 변경하는 방법에 대한 것 이다 def jsonify_decorator(function): def modifyOutput(): return {"output":function()} return modifyOutput @jsonify_decorator def hello(): return 'hello world' @jsonify_decorator def sub(): num1 = input("숫자 1: ") num2 = input("숫자 2: ") return int(num1) - int(num2)..

기타/Python 2024.02.07

[Flask] API 호출 방식과 오류 핸들링

RESTful API를 개발할때 요청 URL에 리소스 ID를 넣어서 보낼 수 있다. (ex. test.com/ticket/12345678) Flask 는 이를 위한 동적 라우팅 기능을 제공하기 때문에 쉽게 적용할 수 있는데 예시는 다음과 같다 @app.route("/ticket/") def get_info(booking): res = request.get("http://티켓정보사이트/~~~/{escape(booking)}.JSON") if res.status_code == 200: return {"message": res.JSON()} elif res.status_code == 404: return {"message": "Wrong"} ''' 하단의 예시는 파라미터의 타입을 지정하는 방법으로 URL 끝에..

[Flask API] 기초 지식

파이썬에서 Flask API는 웹 애플리케이션을 제작할 수 있는 마이크로 프레임워크이다 커뮤니티를 통한 기능 확장이 용이한 편이며 디버거 모드로 실행 가능한 웹 서버도 제공하여 디버깅 기능 또한 내장되어 있어 코드 동작 여부를 신속하게 확인 할 수 있다 RESTful 서비스에 유용한 동적 URL을 지원, Flask-SQLAlchemy 패키지로 ORM을 지원하여 데이터베이스에 접근할 수 있도록 기능 지원도 한다 from flask import Flask app = Flask(__name__) @app.route("/") def basic(): return "Hello World" 위와 같은 코드가 기본적으로 Flask를 사용하는 예시이며 터미널(VS code 기준)에 하단의 명령어를 입력하면 터미널 내에 ..

[IBM-Python] 파이썬 패키징 개념

해당 포스팅은 Coursera의 IBM - Developing AI Applications with Python and Flask 강의를 학습하며 배운것들을 요약 정리하였다. 파이썬 패키지를 참조하게 만들려면 __init__.py 를 추가해야 한다 단위 테스트 사례를 적용하기 위해서 접두사 'test'를 붙이면 단위 테스트 수행 함수로 식별 된다 PEP8 가이드라인에 따르면 메서드(method) 이름은 소문자와 밑줄로 구분하여 작명한다 파이썬 모듈은 __init__.py가 같은 디렉토리에 패키징 되어 있어야 한다 웹 앱과 API에 대한 설명 모든 웹 앱은 API이지만 모든 API가 웹 앱은 아니다 API와 달리 웹 앱은 사용자가 설치하지 않아도 사용이 가능하다 웹 앱은 CRUD 액션을 지원한다 PyLin..

기타/Python 2024.02.05

파이썬 - Poetry?

의존성 관리 도구는 공식적으로 지원하기도 하고 일반적으로 강의를 듣다보면 많이 사용하는 pip가 가장 익숙하기도 하고 이때까지 쓰는데 어려움이 없었기에 별다른 생각 없이 사용하고 있었지만 솔직히 사용하는 패키지 정보 기록과 가상환경 재설치가 너무 힘들기는 했다... 하지만, Poetry는 명령어를 통해 패키지를 설치하면 자동으로 기록해주며 재설치도 수월하다는 장점이 있어 나 스스로도 배우면서 많은 사람들에게 도움이 되었으면 하는 마음으로 부족한 정보를 정리해본다. 컴퓨터가 컨테이너라면 Poetry는 컨테이너 실려있는 "상자" 라고 생각하면 된다. 만약 우리가 상자 안에 있는 가위가 필요한데 단순히 컨테이너 문을 열어서 들어갔다고 상자 안에 들어있는 가위를 쓸 순 없을텐데 가위를 사용하려면 어떻게 해야할까..

기타/Python 2024.01.11

[TIL] Kotlin - Null

※ Null(널)? - 코틀린은 변수에 값이 반드시 할당이 되어야 한다는 규칙이 있다. 값이 할당되지 않은 변수를 사용하려고 하면 오류가 발생하는데 값이 없는 상태를 Null 이라고 부른다. 하지만 null 이 가능한 선언문이 있는데 그 예시는 다음과 같다. val a: Int? = null var b: String? = null 하지만 NPE(NullPointerException) 을 주의하여야 하는데 이는 사용할 수 없는 null인 변수에 접근하며 발생하는 예외이다. 기본적으로 코틀린에서는 NotNull이고 Nullable 표현에만 '?' 가 사용이 된다. Nullable 표현과 관련된 기호로는 세이프 콜(Safe-call): str1?.length 와 non-null 단정 기호 str1!!.leng..

[TIL] 메소드

※ 메소드 - 메소드는 첫 번째 인수로 self를 갖는다. 그리고 메소드가 호출될 때 self에는 이 메소드를 호출한 객체의 인스턴스가 자동으로 전달될 것이다. 하지만 모든 메소드가 self를 첫 번째 인수로 갖는 것은 아니고 self를 갖는 메소드가 가장 일반적으로 사용하는 메소드라는 것을 유념하여야 한다. 구분하자면 self를 첫 인수로 사용하는 메소드를 인스턴스 메소드(instance method)라고 한다. 이름처럼 인스턴스가 사용하는 메소드라 인스턴스 메소드라고 이해하면 편할것이다. ○ 클래스 메소드(class method) - 클래스 메소드의 기본 개념은 클래스 속성에 대해 동작하는 메소드다. 인스턴스 메소드와 달리 호출의 주체가 클래스이고 첫 번째 인수로 클래스가 자동으로 전달된다. 첫 번째..

[TIL] 속성

※ 인스턴스 속성 - 클래스에는 존재하지 않지만 객체에는 존재하는 것들이 있는데 이게 바로 인스턴스 속성(instance attribute)이다. 생성된 인스턴스의 이름공간은 다른 인스턴스에 대해 독립적이라는 것을 이해했을 것이다. 같은 사람이더라도 키나 몸무게가 사람마다 각자 수치가 다르듯이 객체도 자신만의 속성값을 갖는다. ○ 클래스 속성 - 클래스 속성(class attribute)을 설명하기 위해 한 가지 예시를 들어보자면 땅을 사서 집을 짓고 도시를 건설하는 게임이 있다고 생각했을때 회사가 짓는 집을 위해 House 클래스를 정의하고 이 클래스를 토대로 다양한 집을 짓도록 설계했다. 지어진 집에는 회사의 이름 "행복주택" 을 어딘가에 새긴다고 할때 모든 집에는 "행복주택" 이라는 문구가 있을 것..

[TIL] 객체

※ 객체의 생성 - 객체(object)를 생성하려면 클래스가 반드시 정의되어 있어야 한다. 함수를 호출하기 위해서 함수를 정의해야 하는 것과 비슷한 이치라고 볼 수 있다. 다음 코드는 아주 간단한 클래스를 정의한다. class House(): pass House 라는 클래스를 만들었는데 내용을 pass 로 만들어 빈 클래스와 다름이 없다. 하지만 클래스라면 비어 있더라도 언제든지 객체를 생성할 수 있는데 객체를 생성할 때는 "클래스명()" 으로 하면 된다. ○ 객체의 초기화(__init__와 self) - 객체가 어떤 모습인지는 전적으로 클래스에 달려 있기 때문에 클래스의 정의에서 조치가 취해져야 한다. __init__ 메소드는 클래스의 인스턴스가 생성된 직후에 자동으로 호출되는 메소드인데 해당 메소드를..

[TIL] 객체지향과 클래스

※ 객체지향 - 객체지향(Object oriented)는 프로그래밍을 조금이라도 배워봤다면 생소한 단어가 아닐것 이다. 객체지향 프로그래밍이란 데이터 중심적인 프로그래밍 기법으로 객체지향은 데이터와 이에 관련된 행위를 캡슐화한 객체(Object) 라는 개념을 토대로 프로그래밍을 하는 것이다. 예를 들어 노트북이라는 객체가 있다고 가정하면 노트북의 속성(attribute)은 색, 제조날짜, 모니터 크기 등이 될 수 있고 노트북을 켰을 때 배터리가 닳거나 배터리를 충전하는 상태 등은 메소드(method)로 나타낼 수 있다. 그리고 보통 소프트웨어의 규모가 커질수록 절차적 프로그래밍보단 객체지향적 프로그래밍 방식이 선호가 된다. 이는 객체지향 방식으로 잘 설계된 코드가 요주보수가 용이하고 재사용성도 증가되며 ..