반응형
반응형
 datediff 구현

 

 


    function getDateDiff(date1,date2){
        var arrDate1 = date1.split("-");
        var getDate1 = new Date(parseInt(arrDate1[0]),parseInt(arrDate1[1])-1,parseInt(arrDate1[2]));
        var arrDate2 = date2.split("-");
        var getDate2 = new Date(parseInt(arrDate2[0]),parseInt(arrDate2[1])-1,parseInt(arrDate2[2]));

        var getDiffTime = getDate1.getTime() - getDate2.getTime();

        return Math.floor(getDiffTime / (1000 * 60 * 60 * 24));
    }

 

 

getDateDiff("2016-08-01","2016-07-21")

 

 

 

반응형
반응형

문자열을 반복하여 붙이는 3가지 코딩 방법 및 수행 시간 비교


[코드 1]
import time
start_time = time.time()
s = ''
for k in range(1000000):
    s += 'python'
end_time = time.time()
print end_time - start_time

출력: 0.243875980377

[코드 2]
start_time = time.time()
t = []
for k in range(1000000):
    t.append('python')
s = ''.join(t)
end_time = time.time()
print end_time - start_time

출력: 0.161774158478

[코드 3]
start_time = time.time()
s = 'python' * 1000000
end_time = time.time()
print end_time - start_time

출력: 0.000773191452026

위 결과로 알 수 있듯이 단순하게 문자열을 반복하여 붙이는 코딩 방법은 3번째 방식의 효율이 가장 좋습니다.

 

 

파이썬 온라인 코딩 학습 사이트 추천

 

https://www.codecademy.com/ko/tracks/python-ko 


온라인 코딩 학습 사이트로 유명한 codecademy의 Python 학습 컨텐츠입니다. 

한글로 친절하게 번역이 잘 되어 있으며, 

각 단계별로 실제 코딩을 하여야 다음 단계로 넘어갈 수 있기 때문에 

파이썬을 학습하기에 아주 좋은 사이트입니다.

 

 

파이썬으로 개발된 유명한 S/W에는 어떤 것이 있을까요?
아래 링크에서 확인할 수 있습니다.


위 링크의 내용에 나와 있듯이 Youtube도 Python으로 개발되었습니다.

 

 

 

반응형
반응형

윈도우즈에 파이썬 개발 환경 구축 참고 자료 


Python Korea 2014년 6월 세미나 - Windows 환경에서 Python 개발환경 세팅하기

 


http://www.slideshare.net/JoongiKim/python-korea-20140628-windows-python

 


처음에 윈도우즈에서 개발환경을 구축할 때 도움이 될 만한 자료입니다.

 

[turtle 모듈 활용하기]


1) 참고자료


2) 예제

import turtle

t = turtle.Turtle()
t.pensize(3)             # 펜 사이즈를 3으로 설정한다.
t.penup()                # 펜을 종이로 부터 들어올린다.
t.goto(-200, -50)        # 해당 좌표로 이동한다.
t.pendown()              # 펜을 종이에 놓는다.
t.circle(40, steps=3)    # 반지름이 40인 원을 3 step으로만 그린다. ==> 삼각형이 그려짐

t.penup()
t.goto(-100, -50)
t.pendown()
t.circle(40, steps=4)

t.penup()
t.goto(0, -50)
t.pendown()
t.circle(40, steps=5)

t.penup()
t.goto(100, -50)
t.pendown()
t.circle(40, steps=6)

t.penup()
t.goto(200, -50)
t.pendown()


t.circle(40, steps=40)
반응형
반응형

 


함수의 정의와 호출


함수: 여러 개의 statement를 하나로 묶은 단위
* 함수는 반복적 수행이 가능하며, 코드를 논리적으로 이해하는데 도움을 줌. 또한 코드의 일정
 부분을 별도의 논리적 개념으로 독립화 가능


간단한 함수의 정의 → def: 함수 정의 시 사용하는 키워드


함수 객체와 함수 호출
* 함수 이름 자체는 함수 객체의 레퍼런스를 지님
* 함수 이름에 저장된 레퍼런스를 다른 변수에 할당하여 그 변수를 이용한 함수 호출 가능
* 함수 몸체에는 최소한 한 개 이상의 statement가 존재해야 함 (없으면 pass 사용)


함수 인수값 전달 방법
* 기본: 값에 의한 호출(call-by-value) → 실제로는 참조에 의한 호출(call-by-reference)
* 함수 인자에 변경불가능 객체인 숫자값, 문자열, 튜플을 전달하면 의미 없음
* 함수 인자에 변경 가능한 객체인 리스트와 사전을 전달하면 올바른 전달법 및 활용법


- 반환문 : 인수 없이 return문 사용하면 None 객체 전달


- 함수 인자에 대한 동적인 자료형 결정 : 함수 인자는 함수가 호출되는 순간 해당 인자에 전달되는
 객체에 따라 타입 결정

 

함수 인수 처리


기본 인수 값 : 함수를 호출할 때 인수를 넘겨주지 않아도 인수가 기본적으로 가지는 값
* incr(a, step=1)에서 step=1과 같은 형태를 가짐
* 함수 정의를 할 때 일반적인 인수 앞에 기본 인수 값 올 수 없으나 여러 개는 정의 가능


키워드 인수 : 인수 값 전달 시 인수 이름과 함께 값을 전달하는 방식
* 함수 호출 시 키워드 인수는 마지막에 위치해야 함


가변 인수 리스트 : 함수 정의 시 일반적인 인수 선언 뒤에 *var 형식의 인수로 가변 인수 선언
* var 에는 함수 호출 시 넣어주는 인수 값들 중 일반 인수에 할당되는 값을 제외한 나머지 값들을
 지닌 튜플 객체가 할당됨
* C 언어의 printf문과 유사한 형태의 printf 정의 됨


튜플 인수와 사전 인수로 함수 호출하기
* 함수 호출 시 * 사용하고 뒤에 튜플을 넣으면 튜플 전체 호출 가능
* 함수 호출 시 ** 사용하고 뒤에 사전을 넣으면 사전 전체 호출 가능

반응형
반응형

파일 다루기


파일 목록 얻기
* os.listdir(‘경로’) → 디렉토리 안에 들어 있는 각 파일 목록 반환


파일 종류 알아보기
* os.path.isfile(fpath) → 순수 파일이면 true
* os.path.isdir(fpath) → 디렉토리면 true
* os.path.islink(fpath) → 심볼릭링크면 true


파일의 허가권
* os.access(filepath, mode) → 파일의 허가권 알아보기
   / mode에 os.F_OK이면 파일 자체가 존재하는 것을 테스트
   / mode에 os.R_OK이면 읽기 권한이 있는 것을 테스트
   / mode에 os.W_OK이면 쓰기 권한이 있는 것을 테스트
   / mode에 os.X_OK이면 실행 권한이 있는 것(또는 디렉토리인지)을 테스트
* os. access(filepath, mode) → 파일의 허가권 변경하기

 

파일 다루기


파일 조작하기
* os.rename(old_filepath, new_filepath) : 파일 이름 변경하기
* os.rename(old_filepath, folder name/new_filepath) : 파일 이동하기
* shutil.copyfile(src_filepath, dest_filepath) : 파일 복사하기


파일 이름 다루기
* os.path.abspath(상대경로) : 상대 경로를 절대 경로로 변환하기
* os.path.exists(filename) : 주어진 경로의 파일이 존재하는지 확인
* os.curdir : 현재 디렉토리, os.pardir : 부모 디렉토리를 가리키는 이름 얻기
* os.sep : 디렉토리 분리 문자 얻기


경로명 분리하기
* os.path.basename(f) : f 경로에서 파일명만 추출
* os.path.dirname(f) : f 경로에서 디렉토리 경로 추출
* os.path.split(f) : 경로명과 파일명을 한 번에 분리
* os.path.splitext(f) : f 경로의 확장자 분리

 

표준 출력 방향 전환


디렉토리에 관련된 일반 작업
* os.getcwd() : 현재 작업 디렉토리 알아보기
* os.chdir() : 작업 디렉토리 변경하기
* os.mkdir() : 디렉토리 만들기
* os.rmdir() : 디렉토리에 내용이 없을 시 삭제
* os.removedirs(filepath) : 맨 오른쪽부터 단계별 디렉토리 삭제
* shutil.rmtree() : 하위 디렉토리까지 모두 한 번에 삭제
* shutil.copytree(src_filepath, dest_filepath) : 하위 디렉토리와 파일 등을 지니고 있는
 디렉토리 복사


디렉토리(트리) 탐색하기
* os.walk(filepath) : filepath부터 시작하여 재귀적으로 모든 하위 디렉토리 탐색
 탐색 시 발견하는 모든 파일에 대해 다음 튜플을 리턴 (dirpath, dirnames, filenames)

반응형
반응형


파일 입출력 방법
 파일을 열어서 읽고, 쓰고, 덧붙이는 방법
  * open(filename, mode) 내장 함수로 filename 이름을 지닌 file 객체를 얻고 작업 수행 후
     close()를 호출하여 작업 프로세스 자원 점유 해제
 
파일 처리 모드의 종류 : open 내장 함수의 두 번째 인자 mode 설명(생략하면 r모드 설정)
  mode   간단 설명
‘r’ 읽기 전용(기본 모드)
‘w’ 쓰기 전용
‘a’ 파일 끝에 추가
‘rb’ 이진 파일 읽기 전용
‘wb’ 이진 파일 쓰기 전용
‘ab’ 이진 파일 끝에 추가

 

파일 입출력 방법

os.getcwd( ) → 현재 작업중인 폴더를 알아보는 함수
라인 단위로 파일 읽기
 * 파일 객체의 반복자(iterator) 이용하기
 * readline() : 한 번에 한 줄씩 읽음 / readlines() : 파일 전체를 라인 단위로 끊어 리스트에 저장
 * xreadlines() : 파일 전체 읽기 X, 상황별로 필요한 라인만 읽음

파일 포인터 : 파일 내에서 현재 위치를 가리키고 있음

파일 접근 방법
 * 순차 접근 (기본 방식) : 파일을 앞에서부터 순차적으로 읽고 쓰는 방식
 * 임의 접근 : 파일 내 임의 위치에서 읽고 쓰는 방식
    - seek(n) : 파일의 가장 첫 번째 위치에서 n번째 바이트로 포인터 이동
    - tell() : 파일 내 현재 포인터 위치를 반환


표준 출력 방향 전환

 

sys.stdout : 표준 출력
sys.stderr : 표준 에러 출력 → 파일 객체로 변환하면 모든 표준 출력(print)는 해당 파일로 저장됨
sys.stdin : 표준 입력

표준 출력을 파일로 저장하기
 * 표준 출력 저장해 두기 (ex: stdout = sys.stdout)
 * 파일 객체로 표준 출력 변경 (ex: sys.stdout = f)
 * 표준 출력 원상 복구 ( ex: sys.stdout = stdout)

>> (부등호 2개) : 표준 출력이 아닌 다른 쪽으로 출력

StringIO 모듈의 StringIO 클래스 객체
 * 파일 객체처럼 입출력 가능한 문자열 객체
 * StringIO에 지원되는 메소드는 파일 객체가 지원하는 메소드와 거의 동일
 * getvalue() 메소드 → 현재까지 담아 놓은 전체 내용 반환

 

파일로의 지속 모듈

 

지속성 : 프로그램 내 생성된 각종 객체들을 해당 프로그램 종료 이후에도 존재하게 만들고, 동일하거나 다른 프로그램에서 사용할 수 있도록 하는 기능

 

지속성 기능을 지원하는 모듈
 DBM 관련 모듈 : anydbm, dbm, gdbm, dbhash, dumbdbm
 * anydbm : 시스템에서 사용 가능한 모듈 중 가장 최적의 모듈 반환
       기본적으로 dumbdbm을 반환
       사전 자료형을 사용하는 것과 동일한 방법으로 사용
 * pickle 모듈 : 파이썬 객체를 저장하는 일반화된 지속성 모듈
        파이썬의 기본 객체 뿐만 아니라 사용자 정의의 복잡한 객체도 저장 가능
        기본적으로 텍스트 모드로 저장하지만 이진 모드로도 저장 가능
 * pickle.dump(저장하고자 하는 객체, 저장하는 위치)
 * pickle.load(저장했던 위치) → 저장했던 객체 불러옴

 

 

 

반응형

+ Recent posts