제어문과 반복문
- 제어문: 프로그램이 결정을 내리도록 하는 도구로, 조건에 따라 코드를 실행하거나 실행하지 않도록 제어합니다.
- 반복문: 프로그램이 동일한 작업을 반복하도록 하는 도구로, 반복적인 작업을 자동화합니다.
- 결합 사용: 제어문과 반복문을 결합하여 복잡한 논리 흐름을 구성합니다.
while 문
↓기본구조
↓예시
↓실습
break
반복문을 즉시 종료. 특정 조건이 만족되면 더 이상 반복할 필요가 없을 때 사용한다.
continue
현재 반복을 건너뛰고, 다음 반복을 이어간다. 특정 조건에서 코드 블록의 일부를 실행하지 않고 다음 반복으로 넘어가고 싶을 때 사용한다.
range() 함수
특정 범위의 숫자 시퀀스를 생성한다. for 문과 함께 자주 사용되며, 반복 횟수를 지정할 때 유용하다.
중첩 반복문
2차원 데이터(예: 행렬)를 처리하거나, 복잡한 반복 작업을 수행할 때 유용하다.
예외 처리 개념
에러와 예외의 차이
에러(error) : 프로그램이 실행 중에 발생하는 문제로, 종종 프로그램이 비정상적으로 종료되게 만듭니다. 예를 들어, 파일을 열려고 하는데 해당 파일이 없거나, 숫자를 0으로 나누는 경우 에러가 발생할 수 있습니다.
예외(Exception) : 에러의 한 종류로, 예외가 발생하면 프로그램이 멈추고 에러 메시지를 출력합니다. 하지만 예외는 예외 처리를 통해 프로그램이 멈추지 않고, 에러를 처리하며 계속 실행되게 할 수 있습니다.
try, except 예외 처리 기본 구조
finally
예외 발생 여부에 상관없이 항상 실행되는 코드 블록이다. 주로 리소스 정리 (예:파일 닫기, 네트워크 연결 종료 등) 와 같은 작업을 수행할 때 사용된다.
예외 처리의 중요성과 활용
- 프로그램의 안정성 : 예외 처리를 통해 프로그램이 예기치 않은 상황에서도 안정적으로 동작하도록 만들 수 있다. 사용자가 잘못된 입력을 하거나, 외부 시스템에 문제가 발생하더라도, 프로그램이 비정상적으로 종료되지 않도록 할 수 있다.
- 디버깅에 도움 : 예외 처리 구문을 사용하여, 발생할 수 있는 다양한 에러상황을 미리 대비할 수 있다. 특정 예외에 대해 의미 있는 오류 메시지를 제공하면, 문제 발생시 원인을 파악하고 해결하는 데 도움이 된다.
- 리소스 관리 : 파일, 네트워크 연결, 데이터베이스 연결 등 리소스를 사용하는 코드에서 finally 블록을 통해 리소스를 적질히 정리함으로써, 자원 누수를 방지할 수 있다.
클래스 & 객체
객체지향의 대표적인 요소가 클래스와 객체
객체지향 : 컴퓨터의 프로그램을 조금 더 잘 구조화하고 쉽게 유지 보수하기 위해 나온 개념.
최신에 나온 언어들은 객체지향을 목적으로 나오는것들이 많다.
절차지향 : 초기의 컴퓨터들이 사용한 개념. 절차에 따라 순서대로 실행함. 명령이 단순할때는 편리하지만 점차 컴퓨터의 성능이 좋아지고 복잡해지면서 문제점들과 단점들이 부각. 지금의 거의 사용되지 않고 있다.
클래스 : 객체를 만들기 위한 청사진 또는 설계도. 속성(Attributes)과 메서드(Methods)로 구성되며, 속성은 객체의 데이터를, 메서드는 객체의 동작을 정의한다.
객체(Object) : 클래스의 인스턴스(Instance)로, 클래스라는 설계도로부터 실제로 생성된 구체적인 데이터와 기능을 가지는 실체이다. 객체는 클래스에 정의된 속성과 메서드를 가지고 있다.
∞class에서 self 는 필수적인 관례이다. 첫번째 인자로 메서드를 정의하는 경우 반드시 써줘야 함∞
객체지향(OOP)의 4대 핵심 원칙
▷ 캡슐화(Encapsulation) : 캡슐화는 객체의 속성과 메서드를 하나로 묶고, 일부를 외부에 감추어 객체 내부의 구현을 숨기는 원칙입니다. 이를 통해 데이터의 무결성을 보호하고, 외부에서의 직접 접근을 제한합니다.
↓예시
▷ 상속(Inheritance) : 상속은 기존 클래스(부모 클래스)를 기반으로 새로운 클래스(자식 클래스)를 만드는 방법입니다. 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 사용할 수 있으며, 이를 확장하거나 수정할 수 있습니다.
↓예시
▷ 다형성(Polymorphism) : 다형성은 동일한 이름의 메서드가 여러 객체에서 다르게 동작할 수 있는 원칙입니다.
↓예시
▷ 추상화(Abstraction) : 추상화는 복잡한 시스템을 단순화하여, 필요한 부분만 보여주고 나머지는 감추는 원칙입니다.
추상화를 통해 사용자는 객체의 내부 구현에 신경 쓰지 않고, 필요한 인터페이스만 사용할 수 있습니다.
↓ 예시
객체의 속성을 외부에서 새롭게 만드는 건 주의해야 함. 객체간의 사용법이 괴장히 틀어질 수도 있음.
클래스와 객체 사용의 장점
♬ 재사용성 : 한번 정의된 신경망 구조를 여러 곳에서 재사용할 수 있습니다.
♬ 확장성 : 새로운 계층을 쉽게 추가하거나 수정할 수 있습니다.
♬ 모듈화 : 복잡한 신경망을 여러 개의 모듈로 나누어 관리할 수 있습니다.
'Coding > TIL & 배운것들' 카테고리의 다른 글
TIL 나의 공부일지 (1) | 2024.10.02 |
---|---|
이진법에 대하여... (1) | 2024.10.02 |
인공지능을 위한 파이썬 1주차 & 2주차 (2) | 2024.09.30 |
(Python) NumPy 란 (1) | 2024.09.25 |
(Python) pandas 란 (0) | 2024.09.25 |