| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 인공지능사관학교 5기
- python set
- 파이썬 집합문법
- 파이썬
- 알고리즘
- 파이썬리스트문법
- 백준파이썬1157
- 백준단어공부
- 파이썬 딕셔너리 집합 차이점
- 코딩테스트
- 파이썬 시간복잡도
- 백준
- 백준파이썬
- 백준3052번나머지
- python list 문법
- 백준초보
- Python dictionary
- Today
- Total
종원
인공지능사관학교 - 1주차 파이썬 (2일차) 본문
파이썬 기초.
함수, 튜플, 리스트, 콜백 함수, 람다 함수, 객체와 클래스
1. 함수
함수는 특정 작업을 수행하는 코드 블록입니다. 함수는 def 키워드를 사용하여 정의합니다.
예제: 기본 함수

기본적인 함수는 많이 사용해봤는데 인자를 가변형 매개변수로 전달할 수 있다는것을 배웠습니다.
여기서 특정 m값을 지정하지 않으면 m=1 변수가 선언되고, m값을 특정 수로 전달할 수 있습니다.

임의의 개수의 키워드 인자도 받을 수 있습니다. (**kwargs)
여기서 함수를 호출하면, 추가적인 키워드를 딕셔너리로 전달합니다
kwargs -> { 'a' : 10, 'b' : 20, 'c' : 30 } type = dict
2. 튜플
튜플은 변경할 수 없는 순서가 있는 데이터 구조입니다. 소괄호 ()를 사용하여 정의합니다.
예제: 튜플 사용

튜플(tuple)은 불변성으로 한 번 생성되면 그 요소를 변경할 수 없습니다. 이는 리스트와의 주요 차이점입니다.
불변성 덕분에 튜플은 해시 가능하며 딕셔너리의 키로 사용할 수 있습니다.
또한 튜플은 순서가 있는 데이터 구조로, 인덱스를 사용하여 요소에 접근할 수 있습니다.

- 튜플은 서로 다른 데이터 타입의 요소를 가질 수 있습니다. (정수, 문자열, 실수 등)
- 튜플 안에 다른 튜플을 포함할 수 있습니다. (중첩 튜플)
- 튜플의 메서드는 두 가지 메서드만 제공합니다.
count() : 특정 값이 튜플에 몇 번 나타나는지 반환합니다.
index() : 특정 값의 첫 번째 인덱스를 반환합니다.
3. 리스트
리스트는 변경할 수 있는 순서가 있는 데이터 구조입니다. 대괄호 []를 사용하여 정의합니다.

- 리스트는 변경 가능하여 생성 후에도 요소를 수정, 추가, 삭제할 수 있습니다. (튜플과의 차이점)
- 리스트는 순서가 있는 데이터 구조로, 인덱스를 사용하여 요소에 접근할 수 있습니다.
- 리스트는 서로 다른 데이터 타입의 요소를 가질 수 있습니다.
- 리스트 안에 다른 리스트를 포함할 수 있습니다. (중첩 리스트)
아래는 주요 리스트의 메서드 입니다.
- append(): 리스트의 끝에 요소를 추가합니다.
- extend(): 다른 리스트의 모든 요소를 추가합니다.
- insert(): 특정 위치에 요소를 삽입합니다.
- remove(): 특정 값을 제거합니다.
- pop(): 지정된 위치의 요소를 제거하고 반환합니다.
- clear(): 모든 요소를 제거합니다.
- index(): 특정 값의 첫 번째 인덱스를 반환합니다.
- count(): 특정 값의 개수를 셉니다.
- sort(): 리스트를 정렬합니다.
- reverse(): 리스트의 순서를 반대로 합니다.

리스트 컴프리헨션(List Comprehension)
리스트 컴프리헨션은 리스트를 간단하고 직관적으로 생성하는 방법입니다.

4. 콜백 함수
콜백 함수는 다른 함수의 인자로 전달되어 호출되는 함수입니다.
예제: 콜백 함수 사용

파이썬에서 함수는 일급 객체이므로 함수를 다른 함수에 인자로 전달할 수 있습니다.
이를 통해 콜백 함수를 구현할 수 있습니다.


이벤트 기반 프로그래밍에서 이벤트가 발생하면 해당 이벤트에 대한 콜백 함수가 호출됩니다.
click me 버튼을 클릭하면(이벤트 발생) Button is clicked가 출력됩니다.

콜백 함수를 사용하면 함수의 동작을 외부에서 정의하고 변경할 수 있습니다.
이는 코드의 유연성과 재사용성을 높여줍니다.
위와같은 특징으로 콜백 함수는 이벤트 기반 및 비동기 프로그래밍에서 매우 유용하게 사용됩니다.
이를 통해 프로그램의 효율성을 높이고 복잡한 작업을 보다 간편하게 처리할 수 있습니다. 하지만 콜백 함수가
과도하게 사용되면 코드의 가독성과 유지보수성이 저하될 수 있으므로 적절한 상황에서 사용해야합니다.
5. 람다 함수
람다 함수는 익명 함수로, lambda 키워드를 사용하여 정의합니다.
정의와 동시에 사용되며, 일회성으로 사용되는 경우가 많습니다.
예제: 람다 함수 사용
1. 일반함수와 람다함수의 차이


람다 함수는 한 줄로 작성되며, 'lambda' 키워드 다음에 매개변수를 지정하고, 콜론 ':' 다음에 반환할 식을 작성합니다.
또한 람다 함수는 정의와 동시에 호출할 수 있습니다. 일회성으로 사용되는 경우 매우 유용합니다.
2. 고차 함수에서 사용
- 람다 함수는 map(), filter(), reduce() 등과 같은 고차 함수에서 자주 사용됩니다
고차 함수란? 다른 함수를 인자로 받거나 반환하는 함수입니다.

위는 map()을 사용하여 매개변수 x를 지정하고, x**2 (제곱)을 numbers에 적용시켜 list로 반환합니다
아래는 filter()를 사용하여 매개변수 x를 지정하고, x % 2 == 0 (짝수) 만 list로 반환합니다
또한 람다 함수는 리스트 컴프리헨션이나 딕셔너리 컴프리헨션 내에서도 사용할 수 있습니다.

' (lambda x: x ** 2)(x) ' 부분은 리스트 컴프리헨션 내에서 각 요소 'x'를 람다 함수로 처리하고
그 결과를 리스트에 추가합니다.
3. 람다 함수의 단점
람다 함수는 단일 표현식(single expression)만 포함할 수 있으며, 복잡한 로직이나 여러 문장을 포함할 수 없습니다.
따라서 간단한 경우에만 사용하는 것이 좋으며, 복잡한 로직이 필요한 경우 일반 함수를 사용하는 것이 가독성을 높이는 데 도움이 됩니다.
객체와 클래스(★)
클래스는 객체를 생성하는 틀입니다. 객체는 클래스의 인스턴스입니다.
예제: 클래스와 객체
클래스 (class)
1. 클래스 정의
- 클래스는 객체를 생성하기 위한 틀입니다.
- 'class' 키워드를 사용하여 정의합니다.

2. 생성자 메서드 ( __init__ )
- 클래스의 인스턴스가 생성될 때 호출되는 초기화 메서드 입니다.
- 객체의 초기 상태를 설정합니다.

3. 인스턴스 변수
- 클래스의 각 인스턴스에서 개별적으로 유지되는 변수입니다.
- ' self ' 키워드를 사용하여 정의합니다.

4. 메서드
- 클래스 내부에 정의된 함수로, 인스턴스 변수와 상호작용할 수 있습니다.
- 첫 번째 인자로 'self'를 사용하여 인스턴스에 접근합니다.

객체 (Object)
1. 인스턴스 생성
- 클래스의 인스턴스를 생성하여 객체를 만듭니다.
- 클래스 이름을 함수처럼 호출하여 생성합니다.

2. 인스턴스 변수 접근, 메서드 호출
- 객체를 통해 인스턴스 변수에 접근하고 수정할 수 있습니다.
- 객체를 통해 클래스 메서드 ( introduce() ) 를 호출할 수 있습니다.

상속 (Inheritance)
1. 상속
- 한 클래스가 다른 클래스의 속성과 메서드를 상속받을 수 있습니다.
- 이로인해 코드의 재사용성을 높여줍니다.

2. 메서드 오버라이딩
- 자식 클래스에서 부모 클래스의 메서드를 재정의할 수 있습니다.

다형성 (Polymorphism)
같은 이름의 메서드가 서로 다른 클래스에서 다른 동작을 할 수 있습니다.
상속과 메서드 오버라이딩을 통해 구현됩니다.

이와 같은 특징들을 통해 파이썬의 객체 지향 프로그래밍을 효과적으로 활용할 수 있습니다.
객체와 클래스의 개념을 잘 이해하면 복잡한 프로그램을 구조화하고 유지보수하기가 훨씬 쉬워질 것 입니다.
'인공지능사관학교' 카테고리의 다른 글
| 인공지능 사관학교 - 2주차 (DFS, BFS / 깊이 우선 탐색, 너비 우선 탐색) (0) | 2024.06.03 |
|---|---|
| 인공지능 사관학교 - 1주차 복습 문제 모음 (0) | 2024.06.03 |
| 인공지능 사관학교 - 1주차 기초 파이썬 (5일차, 재귀함수/완전탐색) (0) | 2024.05.31 |
| 인공지능 사관학교 - 1주차 기초 파이썬 (4일차, +3일차 시간복잡도 복습) (0) | 2024.05.30 |
| 인공지능 사관학교 - 1주차 파이썬 (3일차) (0) | 2024.05.29 |