본문 바로가기

파이썬

(11)
[TIL] #17. self에 대하여 self 의 의미 Python에서 함수의 인자로 self 를 지정해놓는 경우를 볼 수 있다. 도대체 이 self 는 어떤 것을 의미하는 것일까? 결론을 먼저 말하면 self 는 객체의 인스턴스 그 자체를 의미한다. 이것을 이해하기 위해서는 먼저 Class에 대해 이해를 해야한다. 클래스는 변수와 함수를 묶어서 새로운 객체(타입)으로 만드는 것이다. 이렇게 만든 클래스를 사용하기 위해서는 인스턴스를 생성해야한다. 인스턴스는 클래스에 정의된 속성을 가지는 객체, 흔히 비유하는 붕어빵틀(클래스)로 찍어낸 붕어빵(인스턴스)이다. 인스턴스를 생성하는 방법은 클래스명() 으로 생성할 수 있다. 클래스 내부에 정의된 함수는 메서드(method)라고 하는데 이 때 메서드의 첫번째 인자는 반드시 self 여야 한다. 사..
[TIL] #16. ORM ORM이란? ORM은 Object-Relation Mapping의 약자로 객체(Object)와 관계형 데이터베이스(Relational Database)를 매핑(Mapping)해주는 것을 말한다. 직접 SQL문을 작성하여 데이터베이스를 핸들링 하지 않고 Class로 정의된 객체간의 관계를 기반으로 SQL문을 자동으로 생성하여 데이터베이스를 핸들링할 수 있게 해준다. django의 경우, 프로젝트 폴더 내에 models.py 파일이 ORM과 관련된 파일이다. 이 파일에 클래스를 작성함으로써 관계형 데이터베이스를 설계할 수 있다. ORM의 장단점 Pros 객체지향적인 코드로 인해 직관적인 코드 작성이 가능하다 SQL이 아닌 클래스의 메소드로 DB를 핸들링하므로 개발자가 객체 모델만 이용하여 로직을 구현하는 일..
[TIL] #15. Django-Introduction Django Django란 무엇일까 Django는 Python기반의 오픈소스 웹 애플리케이션 프레임워크이다. 쉽게 말하면, 웹 사이트를 Python기반으로 구축하기 위해서 필요한 여러 가지 도구들을 모아놓은 것이라고 할 수 있다. Java진영의 Spring과 같은 것이라고 생각하면 된다. Python에는 Flask라는 프레임워크도 있는데 Django는 Flask보다 기본적으로 조금 더 많은 기능을 처음부터 포함시켜 제공한다. Flask와 비교했을때 조금 더 무거운 만큼 기본적으로 제공해주는 기능이 많고 그에 따라 커스터마이징에는 비교적 제약이 따르는 프레임워크라고 할 수 있다. MVC 패턴 Django는 MVC 패턴에 기반한 프레임워크이다. 엄연히 말하면 MTV 라고 할 수 있지만 구성된 방식은 기본적으..
[TIL] #13. __init__.py __init__.py __init__.py 는 이 파일을 포함하고 있는 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. 그런데, Python 3.3 버전부터는 이 파일이 없어도 패키지로 인식을 한다고 한다. 하지만, 이미 만들어진 하위 버전들과의 호환을 위해 이 파일을 생성하는 것이 안전한 방법이라고 한다. Refernces 점프투파이썬
[TIL] #12. Absolute path & Relative path Absolute path Absolute path는 말 그대로 절대경로를 말하며 import하는 파일이나 경로에 상관없이 항상 동일한 경로를 말한다. linux에서 말하는 절대경로와 같은 의미를 가진다. 쉽게 생각하면 import하고자 하는 대상이 위치한 경로를 최상위 경로부터 모두 표기하여 import하는 방식이다. 일반적으로 local package를 import할 때는 절대경로를 사용한다. 다음과 같은 구조를 가진 디렉토리가 있다고 치자. . +-- project +-- main.py +-- package1 | +-- module1 +-- package2 +-- module2 +-- module3 +-- subpackage1 +-- module4여기서 module1을 절대경로를 사용하여 import..
[TIL] #11. Module&Package Module과 Package 모듈은 재사용할 목적으로 작성된 Python 소스 파일을 의미한다. 이런 모듈들 여러개가 모여서 어떤 디렉토리안에 포함된다면 그 디렉토리를 패키지라고 한다. sys모듈 공식문서에 따르면 sys 모듈은 다음과 같이 설명되어 있다.(구글 번역😅) 인터프리터에 의해 사용되거나 유지되는 일부 변수와 인터프리터와 강하게 상호작용하는 함수에 대한 엑세스를 제공한다. 즉, Python 인터프리터와 관련된 정보와 기능을 직접 다룰 수 있도록 해주는 모듈이다. 모듈이나 패키지를 import하면 Python은 다음과 같은 우선순위로 모듈/패키지를 찾는다. sys.modules built-in modules sys.path 1,3은 sys 모듈을 통해 접근할 수 있고 2의 경우 sys.built..
[TIL] #10. Function Parameters Parameter Parameter 정의할 때 발생하는 문제들 1. 함수를 정의할 때 default value parameter를 non-default value parameter 앞에 정의하면 안되는 이유 def multiply(a=2,b): print(a*b) >> multiply(2) 메소드를 위와 같이 정의하면 SyntaxError: non-default argument follows default argument 가 발생한다. 그 이유는 만약에 메소드를 호출할 때 인자값을 1개만 전달하면 생략된 인자가 a 인지 b 인지 알 수가 없다. 따라서 b 에도 기본값을 지정해주거나 기본값을 지정해준 인자를 맨 뒤로 이동시켜 메소드를 정의하면 문제를 해결할 수 있다. def multiply(a,b=2): ..
[TIL] #9. Python 기초 문법 Print 화면에 출력할 때 사용 >> print("wecode") wecode Data Type 데이터 타입은 자료형을 의미. 문자인지 숫자인지 등. String 문자열 자료. '' 또는 "" 으로 감싸면 문자열을 나타냄. Integer 정수형 자료. Float 실수형 자료. 부동소수점으로 표기. Complex Number 복소수 자료. Boolean 논리 자료. True 또는 False. Variable 어떤 값을 저장하고 있는 '명사' = 연산자로 변수에 값을 할당한다. 변수 이름 규칙 알파벳, 숫자, _(underscore)로만 구성(공백 불가) 첫글자에는 숫자X 알파벳 대소문자 구분 Math Expression 숫자 연산에 사용 연산자 종류 + : 더하기 - : 빼기 * : 곱하기 / : 나누기..