
01_함수란?
- 파이썬의 함수는 수학의 함수와 동일
- 내장 함수: 파이썬이 기본적으로 제공해주는 함수 ex) print
- 사용자 함수: 사용자가 직접 선언
- 함수는 특정기능을 재사용 하기 위해 사용함
02_함수 선언과 호출
- 함수는 def 키워드, 함수명, :, 들여쓰기를 이용해서 선언
- 함수명과 '()'을 이용해서 함수를 호출
03_함수 내에서 또 다른 함수 호출
ex)
def fun1():
print('fun1 호출')
fun2()
def fun2():
print('fun2 호출')
...
04_인수와 매개변수
- 함수 호출 시 함수에 데이터 전달 가능
- 매개변수: 호출부와 선언부에 관계를 맺어주는 변수
ex) def greet(customer)->매개변수:
...
greet('홍길동')->인수
- 인수와 매개변수는 갯수가 일치해야 함
- 매개변수 갯수가 정해지지 않은 경우 '*'를 이용
05_데이터 반환
- return 키워드를 이용하면 함수 실행 결과를 호출부로 반환 가능
- 함수가 return을 만나면 실행 종료
06_지역변수와 전역변수
- 전역변수: 함수 밖에 선언된 변수로 어디에서나 사용가능하지만 함수안에서 수정 불가
- 지역변수: 함수 안에 선언된 변수로 함수 안에서만 사용 가능
- global을 사용하면 함수 안에서도 전역변수의 값 수정 가능
07_중첩함수
- 함수 안에 있는 함수라서 밖에서는 접근 불가
08_lambda 함수
- 함수 선언을 간단하게 할 수 있음 (parameter, 연산식만 사용)
ex)
def calculator(n1, n2):
return n1 + n2
-> calculator = lambda n1, n2: n1 + n2
09_모듈
- 이미 만들어져 있는 기능 (계산 모듈, 난수 모듈, 날짜 시간 모듈 ...)
- 내부 모듈: python 설치 시 기본적으로 사용할 수 있는 모듈
- 외부 모듈: 별도 설치 후 사용 (Numpy, Pandas ...)
- 사용자 모듈: 사용자가 직접 만든 모듈
10_모듈제작
- 특정 기능을 가지고 있는 파이썬 파일
11_모듈사용
- 모듈을 사용하기 위해서는 import 키워드 사용
- as 키워드로 모듈이름 단축 가능 ex) import calculator as cal
- from ~ as 키워드로 특정기능만 사용 가능 ex) from calculator import add
12~13_실행(메인) 파일
- '__name__ 전역변수
-> 모듈이름이 저장되거나 '__main__'이 지정
-> 실행 시 main이 저장된 파일을 찾아서 여러 모듈이 있을 때 실행하는 것을 찾아냄
- 전역변수는 파이썬이 자체적으로 만들어 줌
14_패키지
- 모듈은 그룹으로 관리
- 경로 내에 경로를 만들고 그 안에 파이썬 파일들을 추가
ex)
calculatorForInt
-> addCal.py
-> subCal.py
-> mulCal.py
-> divCal.py
15_site-packages
- site-packages에 있는 모듈은 어디서나 사용 가능
-> 모듈을 만들고 venv의 site-packages에서 범용적으로 모듈 사용
16_자주 사용하는 외부 모듈
- math 모듈: 수학 관련
- random 모듈: 난수 관련
- time 모듈: 시간 관련
17_객체지향 프로그래밍
- 객체는 속성과 기능으로 구성
- 객체(object) = 속성(Attribute) + 기능(Function)
- 객체는 class에서 생성
- 객체를 사용하면 코드 재사용, 모듈화에 좋음
ex)
계산기 -> 속성: 숫자
-> 기능: 덧셈, 뺄셈, ...
자동차 -> 속성: 색상, 길이, 가격 ...
-> 기능: 전진, 후진, 정지 ...
18_클래스와 객체 생성
- class 키워드와 속성(변수), 기능(함수)을 이용해서 만듬
- 객체는 class의 생성자 호출
ex)
class Car: #클래스 선언
def __init__(self, color, length): |
self.color = color |
self.length = length |->생성자, 속성
def doStop(self): |
print('STOP') |-> 기능
def doStart(self): |
print('START') |-> 기능
19_객체 속성 변경
- 객체 속성은 새로운 값으로 변경 가능
20_객체와 메모리
- 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조
21_얕은복사와 깊은복사
- 얕은 복사: 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않음
- 깊은 복사: 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어짐
22_클래스 상속
- 클래스는 다른 클래스를 상속해서 사용 가능
23~24_생성자
- 객체가 생성될 때 생성자를 호출하면 __init__() 자동 호출
- __init__() 속성을 초기화 함
- 상위 클래스의 속성을 초기화하기 위해서 super()을 이용함 (이때는 self 생략)
* 기능은 상속만 받아서 사용가능, 속성은 '__init__' method가 호출되어야 초기화하고 사용이 가능함
25_다중 상속
- 2개 이상의 클래스를 상속
- 다중 상속은 남발되어서는 안됨 -> 다중 상속의 늪에 빠져 헷갈릴 수 있음
26_오버라이딩
- 하위 클래스에서 상위 클래스의 메서드를 재정의(override)
27_추상클래스
- 상위 클래스에서 하위 클래스에 메서드 구현을 강요
- from abc import ABCMeta
- from abc import abstractmethod
- @abstractmethod
28_예외란?
- 문법적인 문제는 없으나 실행 중 발생하는 예상치 못한 문제 (ex. Zero Division Error)
- 예외 관련 클래스는 Exception 클래스를 상속
29_예외처리
- 예상하지 못한 예외가 프로그램 전체에 영향을 주지 않도록 처리
- try ~ except
-> 예외발생이 예상되는 부분을 try ~ except으로 감쌈
-> 정확히 예외가 발생할 것으로 보이는 부분에서 사용해야 함
30_try ~ except ~ else
- else는 예외가 발생하지 않은 경우 실행하는 구문
-> 필수적으로 사용하는 것은 아니고 예외가 발생하지 않았을 때만 사용
-> try ~ except 사용시에만 사용 가능
31_finally
- 예외 발생과 상관없이 항상 실행
- 외부자원을 가지고 작업할 때 자원 해제를 위해 사용(예외 발생 여부와 무관)
32_Exception 클래스
- 예외를 담당하는 클래스
- raise 키워드를 이용하면 예외를 발생시킬 수 있음
33_사용자 Exception 클래스
- Exception 클래스를 상속해서 사용자 예외 클래스를 만들 수 있음
34_텍스트 파일 쓰기
- 텍스트 파일 -> open() -> read()/write() -> close()
- write() 함수를 통해 파일을 쓸 수 있음
ex)
# 해당 경로에 test.txt 파일 생성 후 Hello world 입력
file = open('C:/pythonTxt/test.txt', 'w')
strCnt = file.write('Hello world')
print(f'strCnt: {strCnt}')
file.close()
35_텍스트 파일 읽기
- read() 함수를 통해 파일을 읽을 수 있음
- close() 함수를 통해 반드시 닫아주어야 함
ex)
open('C:/pythonTxt/test.txt', 'r')
36_텍스트 파일 열기
- 파일 모드는 파일을 어떤 목적으로 open 할지 정함
-> 'w' : 쓰기전용(파일이 있으면 덮어씌움)
-> 'a' : 쓰기전용(파일이 있으면 덧붙임)
-> 'x' : 쓰기전용(파일이 있으면 에러발생)
-> 'r' : 읽기전용(파일이 없으면 에러 발생)
37_with ~ as문
- with ~ as 문을 이용해서 파일 닫기(close)를 생략 가능
ex)
with open(unit'test.txt', 'a')as f: ...
with open(unit'test.txt', 'r')as f: ...
38_writelines()
- 리스트 또는 튜플 데이터를 파일에 쓰기 위한 함수
39_readlines(), readline()
- readlines()는 파일의 모든 데이터를 읽어서 리스트 형태로 반환
- readline()은 한 행씩 읽어서 문자열로 반환
이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다