파이썬의 함수는 수학의 함수와 동일하다.
내장함수, 사용자함수
- 함수는 파이썬에서 기본으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다.
함수 사용 이유
- 함수는 특정 기능을 재사용하기 위해서 사용한다.
함수 선언
- 한수는 def키워드, 함수명, : 들여쓰기를 이용해서 선언한다.
함수 호출
- 함수명과 ‘()’를 이용해서 함수를 호출한다.
📌실습
정수 두 개를 입력하면 곱셈과 나눗셈 연산 결과를 출력하는 함수를 만들고 호출해보자
또 다른 함수 호출
- 함수 내에서 또 다른 함수를 호출할 수 있다.
pass 사용
- pass를 이용해서 실행문을 생략할 수 있다.
📌실습
다음과 같이 구구단 출력 함수가 연쇄적으로 호출되도록 함수를 선언해보자
인수와 매개변수
- 함수 호출 시 함수에 데이터를 전달할 수 있다.
인수와 매개변수 개수
- 인수와 매개변수 개수는 일치해야 한다.
함수 실행 결과 반환
- return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.
함수가 return을 만나면 실행을 종료한다.
📌실습
- 1부터 100까지의 정수 중에서 홀수인 난수를 반환하는 함수를 선언하자
전역변수
- 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.
지역변수
- 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.
global 키워드
- global 을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.
📌실습
- 방문객 수를 카운트하는 함수를 만들어보자.
중첩함수
- 함수안에 또 다른 함수가 있는 형태이다.
📌실습
calculator()함수를 선언하고 calculator() 안에 덧셈, 뺄셈, 곱셈, 나눗셈 함수를 선언하자
Lambda
- lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다
📌실습
- 삼각형, 사각형, 원의 넓이를 반환하는 lambda함수를 만들어보자.
모듈이란, 이미 만들어진 훌륭한 기능으로 사용자는 쉽게 사용할 수 있다.
모듈 구분
- 파이썬 모듈은 내부 모듈, 외부 모듈 그리고 사용자 모듈로 구분할 수 있다.
📌실습1
- random 모듈을 이용해서 1부터 10까지의 정수 중 난수 1개를 발생시켜 보자
📌실습2
- random 모듈을 이용해서 0부터 100사이의 난수 10개를 발생시켜 보자
모듈 만들기
- 모듈은 특정 기능을 가지고 있는 파이썬 파일을 말한다.
📌실습1
- 로또 번호(6개)를 출력하는 모듈을 만들어 보자.
📌실습2
- 문자열을 거꾸로 반환하는 모듈을 만들어보자.
import
-import 키워드를 이용해서 모듈을 임포트 한다.
as
- as 키워드를 이용해서 모듈 이름을 단축 시킬 수 있다.
from ~ as
- from ~ as 키워드를 이용해서 모듈의 특정 기능만 사용할 수 있다
📌실습
- 국어, 영어, 수학 점수를 입력하면 총점, 평균을 출력하는 모듈을 만들어보자
name 전역변수
'name' 에는 모듈 이름이 저장되거나 'main' 이 저장된다.
전역변수 name을 이용한 실행파일 지정
📌실습
- 단위 환산 모듈을 만들고 cm를 mm,inch,m,fit 로 변환해보자.
패키지
- 패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.
site-packages
- site-packages 에 있는 모듈은 어디서나 사용할 수 있다.
수학 관련 함수
math 모듈
- 수학,난수,시간 모듈은 코딩할 때 유용하게 사용된다.
random 모듈
time 모듈
객체지향 프로그래밍
- 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.
객체 만들기(생성)
- 객체는 클래스에서 생성된다.
객체 사용의 장점
- 코드 재사용, 모듈화에 좋다.
클래스 만들기
- 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
- Class 선언 첫글자 대문자로하는게 관례
객체 생성
- 객체는 클래스의 생성자를 호출한다.
📌실습
- 비행기 클래스를 만들고 비행기 객체 5개를 생성해 보자.
객체 속성 변경
- 객체 속성은 변경할 수 있다.
📌실습
- 계산기 클래스를 만들고 사칙연산을 실행해 보자.
객체와 메모리
- 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.
📌실습
- 국어, 영어, 수학 점수를 입력받아 리스트에 저장하고 원본을 유지한 상태로, 복사본을 만들어 과목별 점수를 10% 올렸을 경우에 평균을 출력해 보자
얕은 복사
- 얕은 복사란, 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다.
깊은 복사
- 깊은 복사란, 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다.
얕은복사, 깊은복사 예시
상속 이란?
- 클래스는 또 다른 클래스를 상속해서 내것처럼 사용할 수 있다.
📌실습
- 덧셈, 뺄셈 기능이 있는 클래스를 만들고, 이를 상속하는 클래스를 만들어서 곱셈과 나눔셈 기능을 추가해 보자
생성자
- 객체가 생성될 때 생성자를 호출하면 init()가 자동 호출된다.
init()와 객체 속성
- init()가 속성을 초기화 한다.
Python의 init 함수는 클래스의 객체가 생성될 때 자동으로 호출되는 특수 메서드입니다. 기본값 또는 제공된 값으로 객체의 속성을 초기화하는 데 사용됩니다.
즉, init은 객체의 상태를 초기화하는 생성자 메서드입니다. 객체가 생성되면 생성자에 전달된 추가 인수와 함께 객체 인스턴스를 첫 번째 매개변수('self')로 사용하여 init 메서드가 호출됩니다.
init 메소드는 기본값을 정의하거나 사용할 오브젝트를 구성하는 데 유용할 수 있는 특정 초기 상태로 오브젝트를 생성할 수 있기 때문에 Python 클래스에서 일반적으로 사용되는 메소드입니다
super()
- 상위 클래스의 속성을 초기화하기 위해서 super()를 이용한다.
Python의 super() 함수는 하위 클래스에서 상위 클래스의 메서드를 호출하는 데 사용됩니다. 이를 통해 하위 클래스에서 코드를 다시 작성할 필요 없이 상위 클래스의 코드를 재사용할 수 있습니다.
super()를 사용하려면 하위 클래스와 개체 인스턴스를 인수로 사용하여 호출하기만 하면 됩니다. 이렇게 하면 부모 클래스의 메서드를 호출할 수 있는 프록시 개체가 생성됩니다.
예를 들어, 메소드 speak()가 있는 상위 클래스 Animal과 Animal에서 상속되는 하위 클래스 Dog가 있다고 가정합니다. Dog 클래스의 super()를 사용하여 Animal 클래스의 speak() 메서드를 호출할 수 있습니다.
📌실습
- 중간고사 클래스와 기말고사 클래스를 상속관계로 만들고 각각의 점수를 초기화하자. 또한 총점 및 평균을 반환하는 기능도 만들어보자!
• 다중 상속
- 2개 이상의 클래스를 상속한다.
📌실습
- BasicCalculator와 DeveloperCalculator 클래스를 다음과 같이 만들고 이들 클래스를 상속해서 Calculator 클래스를 만들고 사용해 보자
오버라이딩
- 하위 클래스에서 상위 클래스의 메서드를 재정의(override)한다.
📌실습
- 삼각형 넓이를 계산하는 클래스를 만들고 이를 상속하는 클래스에서 getArea()를 오버라이딩 해서 출력 결과가 다음과 같을 수 있도록 클래스를 만들어보자
추상클래스
- 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.
Python에서 추상 클래스는 직접 인스턴스화할 수 없으며 상속할 다른 클래스의 기본 클래스 역할을 하는 클래스입니다. 추상 클래스는 하위 클래스 집합에 대한 공통 인터페이스를 정의하는 데 유용하지만 일부 또는 모든 메서드에 대한 구체적인 구현을 제공하지 않습니다.
Python에서 추상 클래스를 정의하려면 "Abstract Base Classes"를 나타내는 abc 모듈을 사용할 수 있습니다. 이 모듈은 ABC 클래스를 제공하며, 이 클래스를 하위 클래스로 만들어 자신만의 추상 기본 클래스를 만들 수 있습니다. 그런 다음 abstractmethod 데코레이터를 사용하여 메서드를 추상으로 표시할 수 있습니다. 즉, 추상 클래스의 모든 하위 클래스가 해당 메서드를 구현해야 합니다.
예외 란?
- 예외란, 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제이다.
예외 종류
- 예외 관련 클래스는 Exception 클래스를 상속한다.
예외 처리
- 예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함
try ~ except
- 예외 발생 예상 구문을 try ~ except로 감싼다.
📌실습
- 사용자로부터 숫자 5개를 입력받을 때 숫자가 아닌 자료형이 입력되면 예외 처리하는 프로그램을 만들어보자.
~ else
- 예외가 발생하지 않은 경우 실행하는 구문이다.
📌실습
- 사용자로부터 숫자 5개를 입력받아 짝수, 홀수, 실수로 구분해서 각각을 리스트에 저장하는 프로그램을 만들어보자
finally
- 예외 발생과 상관없이 항상 실행한다.
📌실습
- 사용자로부터 숫자 5개를 입력받아 짝수, 홀수, 실수와 입력한 모든 데이터를 각각 출력하는 프로그램을 만들어보자
Exception
- 예외 담당 클래스 Exception
Raise
- raise 키워드를 이용하면 예외를 발생시킬 수 있다.
📌실습
- 사용자가 문자 메시지를 보낼때 10글자 이하면 SMS로 발송하고, 10글자를 초과하면 MMS로 발송하는 프로그램을 예외처리를 이용해서 만들어보자
사용자 예외 클래스
- Exception 클래스를 상속해서 사용자 예외 클래스를 만들 수 있다.
📌실습
- 관리자 암호를 입력하고 다음 상태에 따라 예외 처리하는 예외 클래스를 만들어보자.
기본 함수
- open(), read(), write(), close()를 이용한 텍스트 파일 다루기
파일 쓰기
- write() 함수를 이용한 파일에 문자열 쓰기
📌실습
- 다음과 같이 시스템 시간과 일정을 텍스트 파일에 작성해 보자.
파일 읽기
- read() 함수를 이용한 파일 문자열 읽기
📌실습
- 다음 텍스트 파일에서 ‘Python’을 ‘파이썬’으로 변경해서 파일에 다시 저장해보자.
파일 모드
📌실습
- 사용자가 입력한 숫자에 대한 소수를 구하고 이를 파일에 작성해보자.
with ~ as문
- with ~ as문을 이용하면 파일 닫기(close)를 생략할 수 있다.
📌실습
- 로또 번호 생성기 프로그램을 만들고 파일에 번호를 출력해 보자!
writelines()
- writelines()는 리스트(List) 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.
📌실습
- 딕셔너리에 저장된 과목별 점수를 파일에 저장하는 코드를 작성하자
readlines()
- 파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.
readline()
- 한 행을 읽어서 문자열로 반환 한다.
📌실습
- 파일에 저장된 과목별 점수를 파이썬에서 읽어, 딕셔너리에 저장하는 코드를 만들어보자.