달력

2

« 2020/2 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1



 

 

 

모듈 만들기

·       파이션은 많은 모듈을 지원하지만 사용자가 직접 모듈 만들 있습니다.

·       모듈은 일반적으로 <모듈이름>.py 으로 지정합니다.


'Development > Python' 카테고리의 다른 글

string  (0) 2020.02.20
random  (0) 2020.02.20
모듈 만들기  (0) 2020.02.19
PEP 8 파이썬 코딩 스타일 - import  (0) 2020.02.19
.pyc 파일  (0) 2020.02.19
연산자 오버로딩(Overloading)  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

PEP 8 파이썬 코딩 스타일 - import

·       라인에 하나의 모듈 import

·       모듈 import 순서

·       절대 경로 사용

 

 

라인에 하나의 모듈 import

·       import 문은 항상 파일의 상단에 위치시킵니다.

·       import는 여러 모듈을 콤마로 연결하지 않고 라인에 하나의 모듈 import합니다.

 

BAD

import os, sys, math

GOOD

import os

import sys

import math

 

 

 

 

 

모듈 import 순서

표준 라이브러리 모듈, 3rd Party 모듈, 그리고 직접 만든 모듈 순으로 import 합니다.

 

순서

설명

1

표준 라이브러리 모듈

2

3rd Party 모듈

3

직접 만든 모듈

 

 

 

 

 

절대 경로 사용

·       모듈 import절대 경로를 사용할 것을 권장하고 있습니다.

·       사용할 모듈이 현재 모듈과 같은 폴더에 있더라도 패키지명부터 절대 경로를 전제경로로 사용합니다. , 복잡한 패키지 경로를 갖는 경우 상대경로(.)를 사용할 수 있습니다.

 

BAD

import mymodule

GOOD

import mypkg.mymodule

from mypkg.mymodule import *

from mypkg import mymodule

 

from . import mymodule # 상대경로

from .mymodule import example # 상대경로

 

 

 

 

import Error

import하지 않고 해당 모듈의 메소드를 사용하면 NameError 발생합니다.

NameError: name 'xxxxxxx' is not defined

 

 


'Development > Python' 카테고리의 다른 글

random  (0) 2020.02.20
모듈 만들기  (0) 2020.02.19
PEP 8 파이썬 코딩 스타일 - import  (0) 2020.02.19
.pyc 파일  (0) 2020.02.19
연산자 오버로딩(Overloading)  (0) 2020.02.19
컴파일과 적재  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 19. 17:01

.pyc 파일 Development/Python



 

 

.pyc 파일

·       바이트 코드 파일

·       기계나 플랫폼(OS)에 의존하지 않도록 만들어진 일종의 목적 코드 (Object Code)

·       파이썬은 컴파일 언어이면서 동시에 인터프리터 언어의 수행 방식을 취하고 있습니다. (Hybrid)

 

 

 

 

 

새로운 .pyc 생성에 대한 판단

.py 수정 시간 .pyc 수정 시간보다 더 최근일 때 새로운 .pyc를 생성합니다.

 

 

 

 

 

 

.pyc 파일 활용

·       .py가 없이도 .pyc 파일만 있어도 import 가능합니다.

·       코드를 숨기는 간단한 기법으로 활용 가능합니다.

 

 


'Development > Python' 카테고리의 다른 글

모듈 만들기  (0) 2020.02.19
PEP 8 파이썬 코딩 스타일 - import  (0) 2020.02.19
.pyc 파일  (0) 2020.02.19
연산자 오버로딩(Overloading)  (0) 2020.02.19
컴파일과 적재  (0) 2020.02.19
파이썬이 모듈을 찾는 순서  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

연산자 오버로딩(Overloading)

·         연산자(+, -, *, /) 객체끼리 사용할 있게 하는 방법입니다.

·         해당 연산자 실행시 연산자 오버로딩한 함수가 실행됩니다.

 

 

연산자

연산자 오버로딩

더하기(+)

__add__()

곱하기(*)

__mul__()

나누기(/)

__truediv__()

빼기(-)

__sub__()

 

 


'Development > Python' 카테고리의 다른 글

PEP 8 파이썬 코딩 스타일 - import  (0) 2020.02.19
.pyc 파일  (0) 2020.02.19
연산자 오버로딩(Overloading)  (0) 2020.02.19
컴파일과 적재  (0) 2020.02.19
파이썬이 모듈을 찾는 순서  (0) 2020.02.19
모듈 사용의 이점  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요


 

컴파일과 적재

모듈을 임포트하게되면 아래의 import math 수행할 발생하는 단계의 작업이 일어나게 됩니다.

 

 

 

import math를 수행할 때 발생하는 일

단계

설명

1

우선 math.pyc 를 찾는다.

2

math.pyc 가 없다면 math.py를 찾아서 mymath.pyc 를 생성합니다.

3

생성된 math.pyc 를 메모리로 읽어들여 작업을 수행합니다.

 


'Development > Python' 카테고리의 다른 글

.pyc 파일  (0) 2020.02.19
연산자 오버로딩(Overloading)  (0) 2020.02.19
컴파일과 적재  (0) 2020.02.19
파이썬이 모듈을 찾는 순서  (0) 2020.02.19
모듈 사용의 이점  (0) 2020.02.19
파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요



 

 

파이썬이 모듈을 찾는 순서

순서

설명

1

·       이미 메모리에 로딩되어진 것

2

·       현재 디렉토리

·       ipython에서 pwd 명령으로 확인 가능 (터미널)

·       getwd() 메서드로 확인 가능 (코드)

3

·       PYTHONPATH 환경 변수에 기술된 디렉토리 목록을 차례로 탐색

4

·       표준 라이브러리 디렉토리

·       sys 모듈 임포트 후 sys.path 로 확인 가능

·       sys.path.append(), sys.path.remove()로 추가, 삭제 가능

 


'Development > Python' 카테고리의 다른 글

연산자 오버로딩(Overloading)  (0) 2020.02.19
컴파일과 적재  (0) 2020.02.19
파이썬이 모듈을 찾는 순서  (0) 2020.02.19
모듈 사용의 이점  (0) 2020.02.19
파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
직렬화와 역직렬화  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요



 

모듈 사용의 이점

·       코드의 재 사용성

·       복잡하고 어려운 기능을 포함하는 프로그램을 간단하게 만들 수 있습니다.

·       프로그램 개발시에 전체 코드들을 여러 모듈 단위로 분리하여 설계함으로써 작업의 효율을 높일 수 있습니다.

·       코드를 별도의 이름공간(scope)으로 구분하고 관리 할 수 있습니다.



'Development > Python' 카테고리의 다른 글

컴파일과 적재  (0) 2020.02.19
파이썬이 모듈을 찾는 순서  (0) 2020.02.19
모듈 사용의 이점  (0) 2020.02.19
파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
직렬화와 역직렬화  (0) 2020.02.19
Parameter Placeholder - MySQL  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

파이썬 3.x 버전의 내장 모듈

현재 파이썬 3.x 버전에서는 대략 200개가 넘는 모듈을 지원

·       문자열(string), 날짜(date), 시간(time),

·       십진법(decimal), 랜덤(random)

·       파일(file), os, sqlite3,

·       sys, xml, email, http

·      

 

 

 

'Development > Python' 카테고리의 다른 글

파이썬이 모듈을 찾는 순서  (0) 2020.02.19
모듈 사용의 이점  (0) 2020.02.19
파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
직렬화와 역직렬화  (0) 2020.02.19
Parameter Placeholder - MySQL  (0) 2020.02.19
iterator vs generator  (0) 2020.02.19
Posted by codedragon codedragon

댓글을 달아 주세요


 

직렬화와 역직렬화

·       파이썬의 객체를 일련의 바이트들로 변환한 후 나중에 파이썬 객체로 다시 복원하게 할 수 있습니다.

·       파이썬 객체를 일련의 바이트들로 변환하는 것을 직렬화(Serialization)라 하고, 다시 바이트들을 파이썬 객체로 메모리 상에 복원하는 것을 역직렬화(Deserialization)이라고 합니다.

 


'Development > Python' 카테고리의 다른 글

모듈 사용의 이점  (0) 2020.02.19
파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
직렬화와 역직렬화  (0) 2020.02.19
Parameter Placeholder - MySQL  (0) 2020.02.19
iterator vs generator  (0) 2020.02.19
처리되지 않은 예외(Unhandled Exception)  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Parameter Placeholder

·         동적 SQL 구성하기 위해서 파라미터값이 들어가는 위치에 Parameter Placeholder %s (MySql 경우) 넣고, execute() 메서드의 두번째 파라미터에 실제값들이 저장된 Tuple 지정합니다.

·         Placeholder 컬럼값을 대치 때만 사용됩니다. 테이블이나 기타 문장에 Placeholder 사용할 없습니다.

 

 

sql = "select * from customer where category=%s and region=%s"

 

curs.execute(sql, (20'dallas'))

 

 

 

sql = "select * from customer where category=%s and region=%s"

구분

설명

%s

·         Placeholder 기호

·         일반 문자열 포맷팅에 사용하는 %s, %d 등과 다릅니다.

·         문자열이건 숫자이건 모두 %s 사용하며, 문자열이라도 %s 인용부호로 둘러싸지 않는다.

 

 

 

curs.execute(sql, (20, 'dallas'))

parameter

description

첫번째 파라미터

·         SQL

두번째 파라미터

·         (20, 'dallas')  파라미터값을 튜플에 넣어 줍니다.

·         튜플 안의 데이타는 SQL문에서 순서대로 적용됩니다.

·         특히 문자열의 경우 단일인용부호(Single Quote) 같은 특수 문자들이 자동으로 Escape 되어 처리됩니다.

 

 


'Development > Python' 카테고리의 다른 글

파이썬 3.x 버전의 내장 모듈  (0) 2020.02.19
직렬화와 역직렬화  (0) 2020.02.19
Parameter Placeholder - MySQL  (0) 2020.02.19
iterator vs generator  (0) 2020.02.19
처리되지 않은 예외(Unhandled Exception)  (0) 2020.02.18
예외(Exception)  (0) 2020.02.18
Posted by codedragon codedragon

댓글을 달아 주세요