제로베이스-데이터-스쿨-13기 #5

Tae_bin·2023년 3월 16일
0
post-thumbnail

⌨️ 파이썬 중급

  1. 함수
  2. 모듈
  3. 클래스
  4. 예외처리
  5. 텍스트파일

1. 함수

1.1. 함수란?

‘함수’는 ‘기능’이라고 생각하자!

파이썬의 함수는 수학의 함수와 동일하다.


내장함수, 사용자함수

  • 함수는 파이썬에서 기본으로 제공하는 내장함수와 사용자가 직접 선언하는 사용자 함수가 있다.

함수 사용 이유

  • 함수는 특정 기능을 재사용하기 위해서 사용한다.

1.2. 함수 선언과 호출

함수를 선언하고 호출하는 방법을 알아두자.

함수 선언

  • 한수는 def키워드, 함수명, : 들여쓰기를 이용해서 선언한다.

함수 호출

  • 함수명과 ‘()’를 이용해서 함수를 호출한다.

📌실습

정수 두 개를 입력하면 곱셈과 나눗셈 연산 결과를 출력하는 함수를 만들고 호출해보자

1.3. 함수 내에서 또 다른 함수 호출

또 따른 함수를 호출하자!

또 다른 함수 호출

  • 함수 내에서 또 다른 함수를 호출할 수 있다.


pass 사용

  • pass를 이용해서 실행문을 생략할 수 있다.

📌실습

다음과 같이 구구단 출력 함수가 연쇄적으로 호출되도록 함수를 선언해보자

1.4. 인수와 매개변수

함수 호출 시 데이터를 넘겨주자

인수와 매개변수

  • 함수 호출 시 함수에 데이터를 전달할 수 있다.

인수와 매개변수 개수

  • 인수와 매개변수 개수는 일치해야 한다.

1.5. 데이터 반환

함수 실행결과를 돌려주자

함수 실행 결과 반환

  • return 키워드를 이용하면 함수 실행 결과를 호출부로 반환할 수 있다.

함수가 return을 만나면 실행을 종료한다.

📌실습

  • 1부터 100까지의 정수 중에서 홀수인 난수를 반환하는 함수를 선언하자

1.6. 지역변수와 전역변수

함수 내에서만 사용할 수 있는 변수가 있다.

전역변수

  • 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.

지역변수

  • 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.

global 키워드

  • global 을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.

📌실습

  • 방문객 수를 카운트하는 함수를 만들어보자.

1.7. 중첩함수

함수 안에 또 다른 함수

중첩함수

  • 함수안에 또 다른 함수가 있는 형태이다.

📌실습

calculator()함수를 선언하고 calculator() 안에 덧셈, 뺄셈, 곱셈, 나눗셈 함수를 선언하자

1.8. lambda 함수

함수 선언을 보다 간단하게 하자!

Lambda

  • lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다

📌실습

  • 삼각형, 사각형, 원의 넓이를 반환하는 lambda함수를 만들어보자.

2. 모듈

2.1. 모듈 이란?

함수가 선언되어 있는 파이썬 파일

모듈이란, 이미 만들어진 훌륭한 기능으로 사용자는 쉽게 사용할 수 있다.

모듈 구분

  • 파이썬 모듈은 내부 모듈, 외부 모듈 그리고 사용자 모듈로 구분할 수 있다.

📌실습1

  • random 모듈을 이용해서 1부터 10까지의 정수 중 난수 1개를 발생시켜 보자

📌실습2

  • random 모듈을 이용해서 0부터 100사이의 난수 10개를 발생시켜 보자

2.2. 모듈 제작

모듈은 파이썬 파일이다!

모듈 만들기

  • 모듈은 특정 기능을 가지고 있는 파이썬 파일을 말한다.

📌실습1

  • 로또 번호(6개)를 출력하는 모듈을 만들어 보자.

📌실습2

  • 문자열을 거꾸로 반환하는 모듈을 만들어보자.

2.3. 모듈 사용

import, from, as 키워드를 이용한다.

import

-import 키워드를 이용해서 모듈을 임포트 한다.

as

  • as 키워드를 이용해서 모듈 이름을 단축 시킬 수 있다.

from ~ as

  • from ~ as 키워드를 이용해서 모듈의 특정 기능만 사용할 수 있다

📌실습

  • 국어, 영어, 수학 점수를 입력하면 총점, 평균을 출력하는 모듈을 만들어보자

2.4. 실행(메인) 파일

전역변수 name을 이용한 실행파일 지정

name 전역변수

'name' 에는 모듈 이름이 저장되거나 'main' 이 저장된다.

전역변수 name을 이용한 실행파일 지정

📌실습

  • 단위 환산 모듈을 만들고 cm를 mm,inch,m,fit 로 변환해보자.

2.5.패키지

모듈을 묶어서 관리하자

패키지

  • 패키지를 이용하면 관련 있는 모듈을 그룹으로 관리할 수 있다.


2.6.site-packages

어디서나 접근 가능한 패키지를 만들자!

site-packages

  • site-packages 에 있는 모듈은 어디서나 사용할 수 있다.

2.7.자주 사용하는 모듈

기본적으로 알아두면 좋은 모듈

수학 관련 함수

math 모듈

  • 수학,난수,시간 모듈은 코딩할 때 유용하게 사용된다.

random 모듈

time 모듈

3. 클래스

3.1. 객체지향 프로그래밍

객체를 이용한 프로그램으로, 객체는 속성과 기능으로 구성된다

객체지향 프로그래밍

  • 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.

객체 만들기(생성)

  • 객체는 클래스에서 생성된다.

객체 사용의 장점

  • 코드 재사용, 모듈화에 좋다.

3.2.클래스와 객체 생성

객체를 이용한 프로그램으로, 객체는 속성과 기능으로 구성된다

클래스 만들기

  • 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.
  • Class 선언 첫글자 대문자로하는게 관례

객체 생성

  • 객체는 클래스의 생성자를 호출한다.

📌실습

  • 비행기 클래스를 만들고 비행기 객체 5개를 생성해 보자.

3.3. 객체 속성 변경

객체의 속성값을 변경하자!

객체 속성 변경

  • 객체 속성은 변경할 수 있다.

📌실습

  • 계산기 클래스를 만들고 사칙연산을 실행해 보자.

3.4. 객체와 메모리

메모리와 객체에 대한 이해

객체와 메모리

  • 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.


📌실습

  • 국어, 영어, 수학 점수를 입력받아 리스트에 저장하고 원본을 유지한 상태로, 복사본을 만들어 과목별 점수를 10% 올렸을 경우에 평균을 출력해 보자

3.5. 얕은복사와 깊은복사

객체 복사에 대한 이해

얕은 복사

  • 얕은 복사란, 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다.

깊은 복사

  • 깊은 복사란, 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다.

얕은복사, 깊은복사 예시

3.6. 클래스 상속

다른 클래스의 기능을 내 것처럼 사용하자!

상속 이란?

  • 클래스는 또 다른 클래스를 상속해서 내것처럼 사용할 수 있다.

📌실습

  • 덧셈, 뺄셈 기능이 있는 클래스를 만들고, 이를 상속하는 클래스를 만들어서 곱셈과 나눔셈 기능을 추가해 보자

3.7. 생성자

객체 생성에 대해서 좀 더 자세히 살펴보자!

생성자

  • 객체가 생성될 때 생성자를 호출하면 init()가 자동 호출된다.

init()와 객체 속성

  • init()가 속성을 초기화 한다.

    Python의 init 함수는 클래스의 객체가 생성될 때 자동으로 호출되는 특수 메서드입니다. 기본값 또는 제공된 값으로 객체의 속성을 초기화하는 데 사용됩니다.
    즉, init은 객체의 상태를 초기화하는 생성자 메서드입니다. 객체가 생성되면 생성자에 전달된 추가 인수와 함께 객체 인스턴스를 첫 번째 매개변수('self')로 사용하여 init 메서드가 호출됩니다.
    init 메소드는 기본값을 정의하거나 사용할 오브젝트를 구성하는 데 유용할 수 있는 특정 초기 상태로 오브젝트를 생성할 수 있기 때문에 Python 클래스에서 일반적으로 사용되는 메소드입니다

super()

  • 상위 클래스의 속성을 초기화하기 위해서 super()를 이용한다.

    Python의 super() 함수는 하위 클래스에서 상위 클래스의 메서드를 호출하는 데 사용됩니다. 이를 통해 하위 클래스에서 코드를 다시 작성할 필요 없이 상위 클래스의 코드를 재사용할 수 있습니다.
    super()를 사용하려면 하위 클래스와 개체 인스턴스를 인수로 사용하여 호출하기만 하면 됩니다. 이렇게 하면 부모 클래스의 메서드를 호출할 수 있는 프록시 개체가 생성됩니다.
    예를 들어, 메소드 speak()가 있는 상위 클래스 Animal과 Animal에서 상속되는 하위 클래스 Dog가 있다고 가정합니다. Dog 클래스의 super()를 사용하여 Animal 클래스의 speak() 메서드를 호출할 수 있습니다.

📌실습

  • 중간고사 클래스와 기말고사 클래스를 상속관계로 만들고 각각의 점수를 초기화하자. 또한 총점 및 평균을 반환하는 기능도 만들어보자!

3.8. 다중 상속

2개 이상의 클래스를 상속한다.

• 다중 상속

  • 2개 이상의 클래스를 상속한다.

📌실습

  • BasicCalculator와 DeveloperCalculator 클래스를 다음과 같이 만들고 이들 클래스를 상속해서 Calculator 클래스를 만들고 사용해 보자

3.9. 오버라이딩

메서드를 재정의 한다!

오버라이딩

  • 하위 클래스에서 상위 클래스의 메서드를 재정의(override)한다.

📌실습

  • 삼각형 넓이를 계산하는 클래스를 만들고 이를 상속하는 클래스에서 getArea()를 오버라이딩 해서 출력 결과가 다음과 같을 수 있도록 클래스를 만들어보자

3.10. 추상클래스

메서드 구현을 강요한다.

추상클래스

  • 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.

    Python에서 추상 클래스는 직접 인스턴스화할 수 없으며 상속할 다른 클래스의 기본 클래스 역할을 하는 클래스입니다. 추상 클래스는 하위 클래스 집합에 대한 공통 인터페이스를 정의하는 데 유용하지만 일부 또는 모든 메서드에 대한 구체적인 구현을 제공하지 않습니다.
    Python에서 추상 클래스를 정의하려면 "Abstract Base Classes"를 나타내는 abc 모듈을 사용할 수 있습니다. 이 모듈은 ABC 클래스를 제공하며, 이 클래스를 하위 클래스로 만들어 자신만의 추상 기본 클래스를 만들 수 있습니다. 그런 다음 abstractmethod 데코레이터를 사용하여 메서드를 추상으로 표시할 수 있습니다. 즉, 추상 클래스의 모든 하위 클래스가 해당 메서드를 구현해야 합니다.


4. 예외처리

4.1. 예외란?

예상하지 못한 문제로 프로그램 실행이 어려운 상태

예외 란?

  • 예외란, 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제이다.

예외 종류

  • 예외 관련 클래스는 Exception 클래스를 상속한다.

4.2. 예외처리

발생된 예외를 별도 처리함으로써 프로그램 전체의 실행에 문제가 없도록 함

예외 처리

  • 예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함

try ~ except

  • 예외 발생 예상 구문을 try ~ except로 감싼다.

📌실습

  • 사용자로부터 숫자 5개를 입력받을 때 숫자가 아닌 자료형이 입력되면 예외 처리하는 프로그램을 만들어보자.

4.3. try ~ except ~ else

예외가 발생하지 않은 경우에 실행하는 구문!

~ else

  • 예외가 발생하지 않은 경우 실행하는 구문이다.

📌실습

  • 사용자로부터 숫자 5개를 입력받아 짝수, 홀수, 실수로 구분해서 각각을 리스트에 저장하는 프로그램을 만들어보자

4.4. finally

finally

  • 예외 발생과 상관없이 항상 실행한다.

📌실습

  • 사용자로부터 숫자 5개를 입력받아 짝수, 홀수, 실수와 입력한 모든 데이터를 각각 출력하는 프로그램을 만들어보자

4.5. Exception 클래스

Exception은 예외를 담당하는 클래스이다.

Exception

  • 예외 담당 클래스 Exception

Raise

  • raise 키워드를 이용하면 예외를 발생시킬 수 있다.

📌실습

  • 사용자가 문자 메시지를 보낼때 10글자 이하면 SMS로 발송하고, 10글자를 초과하면 MMS로 발송하는 프로그램을 예외처리를 이용해서 만들어보자

4.6. 사용자 예외 클래스

예외 클래스를 직접 만들어보자!

사용자 예외 클래스

  • Exception 클래스를 상속해서 사용자 예외 클래스를 만들 수 있다.

📌실습

  • 관리자 암호를 입력하고 다음 상태에 따라 예외 처리하는 예외 클래스를 만들어보자.

5. 텍스트파일

5.1. 텍스트파일 쓰기

텍스트 파일을 파이썬으로 다뤄보자!

기본 함수

  • open(), read(), write(), close()를 이용한 텍스트 파일 다루기

파일 쓰기

  • write() 함수를 이용한 파일에 문자열 쓰기

📌실습

  • 다음과 같이 시스템 시간과 일정을 텍스트 파일에 작성해 보자.

5.2. 텍스트파일 읽기

텍스트 파일의 텍스트를 읽어보자

파일 읽기

  • read() 함수를 이용한 파일 문자열 읽기

📌실습

  • 다음 텍스트 파일에서 ‘Python’을 ‘파이썬’으로 변경해서 파일에 다시 저장해보자.

5.3. 텍스트파일 열기 모드

파일을 다양한 방식으로 open할 수 있다.

파일 모드


📌실습

  • 사용자가 입력한 숫자에 대한 소수를 구하고 이를 파일에 작성해보자.

5.4. with ~ as문

파일 닫기(close)를 생략하자

with ~ as문

  • with ~ as문을 이용하면 파일 닫기(close)를 생략할 수 있다.

📌실습

  • 로또 번호 생성기 프로그램을 만들고 파일에 번호를 출력해 보자!

5.5. writelines()

반복 가능한 자료형의 데이터를 파일에 쓰자!

writelines()

  • writelines()는 리스트(List) 또는 튜플 데이터를 파일에 쓰기 위한 함수이다.

📌실습

  • 딕셔너리에 저장된 과목별 점수를 파일에 저장하는 코드를 작성하자

5.6. readlines(), readline()

여러줄 읽기와 한줄 읽기

readlines()

  • 파일의 모든 데이터를 읽어서 리스트 형태로 반환한다.


readline()

  • 한 행을 읽어서 문자열로 반환 한다.


📌실습

  • 파일에 저장된 과목별 점수를 파이썬에서 읽어, 딕셔너리에 저장하는 코드를 만들어보자.

profile
Learn Data Analytics

0개의 댓글