본문 바로가기

Python_Beginer/Note

Python 수강 노트 9

< 190330 >

- 조건문 : if / elif / else

- 반복문 : while / for

- 변수의 범위 : 자신이 최초로 생선된 위치를 기준으로 하위 블록으로는 갈수 있으나 상위 블록은 실행 여부에 따라 결정

- 문법의 중첩 : 블록을 구성하는 문법들은 서로 포함 가능

  1. if - if : 조건을 상세하게 세분화

if 1차 조건:

if 1-1차 조건:

...

elif 1-2차 조건:

...

else:

...

elif 2차 조건:

if 2-1차 조건:

...

elif 2-2차 조건:

...

else:

...

else:

...

  2. for - if : 반복이 진행되는 동안 반복의 인덱스에 대한 조건을 판별

for 변수 in 반복조건:

if 1차 조건:

...

elif 2차 조건:

...

else:

...

  3. for - for : 바깥의 반복이 1회 진행되는 동안 안쪽의 반복이 매번 새로 진행 / 바깥의 반복은 행을 구성 안쪽의 반복은 열을 구성 / 초기식 변수와 안쪽의 초기식 변수는 중복될수 없음.

for 변수1 in 반복조건:

...

for 변수2 in 반복조건:

...

...

- 함수 : 재사용 가능한 프로그램 명령어의 집합

def 함수이름(파라미터1, 파라미터2, ... 파라미터n):

... 명령어 ...

[return [값]]

  1. 파라미터는 함수가 실행되기 위해 주어지는 조건값(필요한 만큼 콤마로 구분)

  2. return은 함수가 호출된 위치에 결과값을 돌려주기 위한 키워드.

  3. 값이 명시 되지 않을 경우 None이 리턴됨.

  4. return을 중간에서 만날 경우 함수는 그 즉시 실행을 중단(단순히 실행을 중단하는 용도)

- 파리미터 기본값 설정

def 함수이름(파라미터1=값1, 파라미터2=값2, ...파라미터n=값n):

... 명령어 ...

[return [값]]

  1. 마지막 파라미터부터 순차적으로 기본값 부여 가능

  2. 기본값이 정의도니 파라미터는 함수를 호출할 때 값의 전달을 생략할 수 있다.

- 연속성 자료형 리턴 : 연속성 자료형(tuple, list)를 리턴하는 경우 함수 호출 시 각 원소를 개별적인 변수에 나누어 할당

def foo(...):

... 명령어 ...

return (a,b)

x,y = foo(...)

- 파리미터 전달시 이름 지정 : 파라미터의 이름을 지정할 경우 값의 전달 순서는 상관 없다.

def foo(a, b, c):

... 명령어 ...

foo(b=1,c=2,a=3)

- 파이썬 기본 내장 함수

  1. 사용자(개발자) 정의 함수 : 필요 따라 직접 정의한 함수

  2. 내장함수 : 프로그래밍 언어 안에 처음부터 내장되어 있는 함수

    2-1. print

print(출력할 내용) : 기본 출력 사용 방법

print(값1, 값2, 값3 ... 값n) : 여러 개의 값을 이어서 출력 / 출력시에 값들이 띄어쓰기를 사이에 두고 이어서 출력

print(값, end='설정할 내용') : end 파리미터 사용 / 설정하지 않을 경우 기본값이 \n이므로 줄바꿈 처리됨

print(값1 값2 값3 ... 값n, end='설정할 내용') : 값을 공백으로 구분 후 사용

print(값1, 값2, 값3 ... 값n, end='설정할 내용') : 값을 ,(콤마)로 구분 후 사용

- 변수의 타입과 관련된 함수

  1. type

  2. isinstance

  3. str

  4. int

  5. float

- 연산과 관련된 함수

  1. pow

  2. abs

  3. divmod

- 연속성 자료형과 관련된 함수

  1. len

  2. max

  3. min

  4. sum

  5. list

  6. tuple

  7. range

- 평균을 구하는 기능은 없으므로 평균은 다음과 같이 구한다.

avg = sum(리스트) // len(리스트)

- 딕셔너리의 key와 value를 각각 리스트로 변환

mydict = {'a':123, 'b':456}

a = list(mydict.key())

b = list(mydict.value())

- 리스트 정렬하기

  1. 원본 자체를 정렬

mylist = [1, 3, 5, 2, 4]

mylist.sort()

  2. 원본은 그대로 두고 정렬된 복사본을 리턴받기

mylist = [1, 3, 5, 2, 4]

s = sorted(mylist)

- 파일 입출력

  1. 파일 저장하기 : open() 함수를 통해 리턴 받은 객체를 활용하여 write() 함수를 호출 / 저장후 줄바꿈을 하지 않기 때문에 필요에 따라 \n 사용 / close()를 호출하여 닫아야됨 / w=새로쓰기 / a=이어쓰기 / r=읽기

f = open('경로', 'w|a', encoding='인코딩방식')

f.write('저장할 내용\n')

f.close()

  2. 파일 읽기 : open() 함수를 통해 리턴받은 객체를 활용 / read()함수나 readlines() 함수를 호출 / 읽기모드가 r이 아닌 경우 에러 발생

f = open('경로', 'r', encoding='utf-8')

# 파일의 모든 내용을 한번에 문자열로 읽어들임.

content = f.read()

# 파일의 내용을 행 단위로 구분하여 리스트 형태로 읽어들임(\n포함됨)

# 그러므로 리턴받은 각 원소에 대하여 strip()함수를 호출하여 공백을 제거할 필요가 있다.

lines = f.readlines()

f.close()

  

with open(...) as f:

...

...

with 블록 안에서만 유효. 마지막 close 처리를 생략할 수 있다.

- 객체지향 프로그램 : 객체가 중심이 되는 프로그래밍(변수, 함수를 묶어내는 것)

- 객체지향

  1. 객체의 개념 이해

  2. 클래스와 객체의 관계 이해

  3. 객체 지향 언어의 3대 특성 이해

    3-1. 상속성

3-2. 캡슐화(은닉성)

3-3. 추상화(다향성)

- 객체 : 데이터와 기능

- 클래스 : 객체의 설계도 역활을 하는 프로그램 소스

  ex> 자동차

  1. 명사적인 특성(멤버변수로 표현) : 엔진 / 문 / 창문 / 바퀴 등

  2. 동사적인 특성(메서드로 표현) : 전진 / 후진 등\

  3. 동일한 설계로 만들어진 객체라고 해도 형태는 같지만 실제는 각각 존재한다.

  4. 여러개의 객체간의 서로 동일한 이름으로 존재하지만 실제로는 서로 다른 값

- 클래스의 문법

class 클래스 이름:

멤버변수

def 메서드이름(self [,파라미터...]):

...

[return 값]

  1. class에 속하는 모든 메서드는 첫 번째 파라미터로 'self'라는 값을 명시

  2. 예약어와 클래시 이름을 명시 하고 :(콜론)을 사용하여 블록을 구성

- 클래스 호출 : 변수이름 = 클래스이름()

  1. 생성된 변수를 객체라고 한다.

  2. 객체는 클래스 안에 정의된 모든기능을 부여받음.

  3. 객체에게 부여된 기능은 .(점)을 통해 접근

- 클래스를 정의하면 같은 구조를 갖는 데이터 단위를 여러개 생성할수 잇음.

- 객체 안에 멤버변수(=데이터)가 포함하지 않음

- 객체 안에 포함된 메서드를 호춣하여 결과를 만들기 위한 목적이므로 굳이 여러개의 객체를 생성할 필요 없음

- self : 클래스에 포함되는 모든 메서드의 첫 번째 파라미터로 정의하도록 규정 / self 파라미터는 객체를 통해 메서드가 호출될 때는 값을 전달 받지 않음

- 같은 클래스에 소속된 함수들끼리 호출할 경우 self.함수이름() 형식으로 접근

- 멤버변수(전역변수) : 클래스 안에서 선언된 변수로서, 클래스 블록 범위 안에서 유효

- 지역변수 : 메서드 안에서 선언된 변수로서 메서드 블록을 빠져나가지 못한다. 파리미터도 지역변수의 일종.

- 클래스에 속한 메서드에서 멤버변수에 접근하기 위해서는 self를 통해서만 가능

- 멤버변수는 클래스 안의 메서드가 공유 / 파라미터나 메서드 안에서 최초로 생성된 변수는 그 메서드를 벗어날 수 없다.

- 생성자 : __inin__ / 객체가 생성될 때 자동으로 호출됨 / 객체가 생성될 때 해당 객체의 특성(변수)를 초기화(최초 값) 하기 위해 사용

- 변수의 값을 비울때는 None를 할당

- 서로 같은 종류의 특성과 기능을 갖지만, 각각의 값은 다르며 각자 독립적으로 동작할 수 있는 프로그램의 기능 단위를 객체라고 한다.ㅑ

- 모듈 : 프로그램에서 자주 사용될 기능들을 별도의 파일로 분리해 놓은 것

- 재사용 가능한 다위들을 다른 프로그램들에서 활용할 목적으로 분리해 놓은 형태

- 파이썬 소스코드를 작성할 때 분리한 파일들을 조립하여 그 안에 정의된 기능을 활용

- 모듈 사용 패턴

  1. 다른 파일을 참조 : import 를 사용(ex. import test) / 파일이름.기능명 형식으로 사용

  2. 참조하는 모듈에 별칭 적용 : as를 사용(ex. import test as t) / 별칭이름.기능명 형식으로 사용

  3. 특정 기능만 지정하여 참조 : from를 사용(ex. from test import t) / 모듈에서 한두가지 기능만 사용 할 때

- 변수, 연산자 -> 함수, 클래스(객체) -> 모듈

- 조건문, 반복문 -> 

- pandas : 빅데이터 분석 / Matplotlib : 데이터 시각화 / requests : 웹 상의 데이터를 수집 / bs4 : 웹 상의 수집 결과를 분석 / numpy : 수학,과학 연산

  wordcloud : 워드클라우드 만들기 / konlpy : 한글 형태소 분석

- 내장 모듈

  1. sys 

    1-1. platform() : 현재 구동중인 운영체제의 이름에 해당하는 값(윈도우 - win32 / 맥 = darwin / 리눅스 = linux1 혹은 linux2)

  2. os

    2-1. system() : 파라미터로 전달된 문자열을 명령어 형태로 실행하고 그 결과를 출력

2-2. popen() : 명령어 실행 결과를 객체로 리턴

2-3. getcwd() : 작업중인 현재 폴더의 위치를 조회

2-4. listdir() : 상대경로 방식으로 현재 폴더의 하위 항목들 조회

    2-5. target : 절대 경로 방식으로 특정 폴더의 하위 항목들 조회 / sys, os 둘다 사용

2-6. path.exists() : 지정된 경로의 파일이나 폴더가 존재하는지 여부를 검사

2-7. path.abspath() : 상대 경로를 절대 경로로 변환하는 기능

2-8. mkdir() : 파라미터로 전달된 경로의 폴더를 생성 / 주어진 경로의 최종 폴더만 생성하기 때문에 중간 단계의 폴더가 존재하지 않는다면 실행시 에러

2-9. rmdir() : 파리미터로 전달된 경로의 폴더를 삭제 / 비어 있는 폴더만 삭제가능

2-10. makedirs() : 중간단계의 폴더가 없더라도 최종 경로까지 순차적으로 폴더를 생성

2-11. shutil.move() : 파일을 이동 / 같은 폴더 안에서 이름만 변경도 가능(파일 이름바꾸기)

2-12. shutil.copy() : 특정 폴더를 복사 / 원본 폴더 하위에 다른 파일이나 폴더가 포함되어 있다면 하위 항목들도 복사

  3. glob : 특정 형식의 파일들의 목록을 조회하는 기능을 제공 / 파일명 기반으로 파일 검색 기능을 사용 / 별칭을 통해 사용 / 파일 필터링

    3-1. 별칭 사용 방법

import glob as gl

file_list = gl.glob('*.txt')

  4. datetime : 시스템의 현재 시각 조회하기

    4-1. datetime.now() : 시스템의 현재 시각을 저장하고 있는 객체를 리턴

import datetime as dt

now_time = dt.datetime.now()

4-2. 맴버변수

print(now_time.year) #'년도

print(now_time.month) # 월

print(now_time.day) # 날짜

print(now_time.hour) # 시간

print(now_time.minute) # 분

print(now_time.second) # 초

print(now_time.microsecond) # 1/1000 초

4-3. weekday() : 요일에 해당하는 인덱스를 리턴

print(now_time.weekday()) #'요일인덱스 (0=월 ~ 6=일)

4-4. strftime() : 날짜 성분에 대한 형식 문자를 사용하여 형식이 갖춰진 문자열을 생성한 후 리턴

import'datetime'as'dt

now_time ='dt.datetime.now()

now_str ='now_time.strftime("%y-%m-%d'%H:%M:%S")

  4-4-1. 주요 형식 문자

%Y 앞의 빈자리를 0으로 채우는 4자리 년도

%H 앞의 빈자리를 0으로 채우는 2자리 시간

%y 앞의 빈자리를 0으로 채우는 2자리 년도 

%M 앞의 빈자리를 0으로 채우는 2자리 분

%m 앞의 빈자리를 0으로 채우는 2자리 월

%S 앞의 빈자리를 0으로 채우는 2자리 초

%d 앞의 빈자리를 0으로 채우는 2자리 날짜

4-5. datetime() : 파라미터 값들을 성분으로 갖는 날짜 객체 생성

4-6. datetime.strptime() : 문자열을 분석하여 날짜 성분만 추출한 뒤 날짜 객체로 변환

4-7. date() : 년,월,일만을 성분으로 갖는 객체 생성

4-8. time() : 시,분,초만을 성분으로 갖는 객체 생성

4-9. combine() : date와 time를 하나의 함수로 결합

4-10. 시간 지정시 반드시 24시간제로 지정해야됨.

'Python_Beginer > Note' 카테고리의 다른 글

Python 수강 노트 9  (0) 2019.03.30
Python 수강 노트 8  (0) 2019.03.16
Python 수강 노트 7  (0) 2019.03.15
Python 수강 노트 6  (0) 2019.03.15
Python 수강 노트 5  (0) 2019.03.03
Python 분석 방법 2  (0) 2019.03.03