일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AI 5기
- 함수실행시간
- AI
- gitignore
- 알고리즘
- onClick
- Level1
- A태그
- with\
- Iterator
- target
- sql
- vscode
- itertools
- WIL
- python
- Display
- git #github #내일배움캠프
- position
- venv
- time()
- iterable
- 프로그래머스
- 가상환경
- 함수성능평가
- 내일배움캠프
- 우선순위
- googleappscript
- cte
- googlesheet
- Today
- Total
05의 개발 계발
[TIL] 230323 [python] .sort 와 sorted()의 차이 (Method 와 Function) 본문
TIL 학습목표
- method와 function, class의 개념과 관계를 이해한다.
- built-in method 인 .sort와 built-in function인 sorted()의 차이와 사용법을 안다.
1) 문제점 (Problem)
지난 포스팅에서 코드를 축약하려고 아래와 같이 .sort 의 위치를 옮겨보았다.
하지만 None이라는 값이 출력되었다.
#기존코드
No_1=[k+1 for k in range(0,3) if max(score) == score[k]]
No_1.sort()
return No_1
#수정코드
No_1=[k+1 for k in range(0,3) if max(score) == score[k]].sort()
return No_1
결론적으론 .sort 의 사용법이 잘못되었다.
.sort는 Class의 method로서 객체에 담아 사용할 수 없다.
+230409 정확한 표현은 .sort는 return 값이 없고 동작만 하는 method 이므로, None을 return해준다!
다른 예로, .pop 의 경우 요소(item)를 제거하고, 제거한 요소를 return해주기 때문에 a=list.pop() 처럼 객체에 담아 활용이 가능하다.
이 문제를 이해하기 위해 학습을 진행하였고, 구글링과 python docs, 파이썬 심화 강의를 참고하였다.
그 내용을 정리해보도록 하자.
2) 시도해본 것들 (Try)
학습을 통해 이해한 것들을 정리해보자.
▶.sort와 sorted() 사용법
먼저 코드와 결과를 통해 사용법을 살펴보자.
L = [4, 3, 1, 2]
print("▼▼▼기존 리스트▼▼▼")
print(L) # L을 출력
print("▼▼▼sort method사용▼▼▼")
L.sort() # L을 오름차순 정렬하라 메소드(method)사용
print(L) # L 재출력
print("-------------------------------------------")
L = [4, 3, 1, 2]
print("▼▼▼기존 리스트▼▼▼")
print(L) # L을 출력
print("▼▼▼sorted fuction사용▼▼▼")
L_1 = sorted(L) # 함수(fuction)은 객체(object)에 담아야 의미가 있다.
print(L_1)
.sort와 sorted() 모두 오름차순 정렬을 해준다. 즉, 같은 기능을 가진다.
(+) 용도 파악하기
.sort 는 기존의 리스트를 정렬 후 저장한다. → 기존 리스트를 이후에도 정렬된 값으로 사용할 때 사용
sorted() 는 새로운 객체에 정렬된 값을 저장한다. → 기존 리스트와 별개로, 정렬된 값을 저장하여 다룰 때 사용
.sort는 객체(object)에 담지 않고 실행하였고, sorted()는 객체(object)에 담아 실행하였다.
*위 코드에서 객체(object)는 L_1이다
이는 Method 와 function의 차이로 인해 일어나는 것이고, 이를 이해하기 위해 용어들을 정리해보자.
▶Class, Method, function 의 관계
.sort는 built-in method(내장메소드) 이고, sorted()는 built-in function(내장함수) 이다.
용어를 정리해보자.
함수(function) // 동작을 반복하는 명령 묶음. 일반적으로 얘기하는 함수이다. ex) def sum(a,b)
클래스(class) // 객체변수들과 메소드들의 묶음
메소드(Method) // 클래스 안에서 구현된 함수
. // 도트 연산자 - 클래스의 메소드를 호출할 때 사용 ex) list.sort()
내장함수(built-in function) // 기본적으로 python이 가지고 있는 함수 ex) sorted()
내장클래스(built-in class) // 기본적으로 python이 가지고 있는 클래스 ex) list
내장메소드(built-in method) // 기본적으로 python이 가지고 있는 메소드 ex) .sort
여기서 class의 개념이 중요하지만, 너무 방대하니 따로 class 참고자료를 보도록 하자.
결국, 메소드와 함수는 같은 함수의 개념이지만. 클래스 안에서 정의된 함수를 메소드라고 부르는 것이다.
그리고 메소드(클래스 안의 함수)는 도트연산자(.)를 통해서 사용할 수 있다. ex) list.sort()
vscode 에서는 내장코드들을 Ctrl + 마우스Click으로 확인해 볼 수 있다.
3) 해결 (Solution)
메소드(method)는 도트연산자(.)로, 함수(function)는 객체(object)로 담아서 실행
이처럼 클래스에 속한 함수인 메소드는 도트연산자로 실행시켜야하고, L.sort()
일반 함수는 변수라는 객체에 담아서 실행해야 한다. L_1 = sorted(L)
앞으로 클래스를 자주 활용할텐데, 이 점을 숙지한체로 코딩을 하도록 하자.
4) 알게 된 점 (Learnd)
method와 function, class의 개념과 관계를 학습했다.
또한 내장코드를 보는 방법과 내장코드를 봄으로써 클래스나 함수, 메소드를 생성하는 방식을 참고 할 수 있는 이점이 있었다.
docs를 활용하고, 내장코드를 보는 것을 권장하는 이유가 무엇인지 알 것 같다.
느리더라도 확실히 이해하면서 오늘도 성장하자.
'TIL' 카테고리의 다른 글
[TIL] 230327 [Python] import 사용법 - 파일불러오기 (0) | 2023.03.27 |
---|---|
[TIL] 230324 [python] iterable & iterator & itertools 의 관계 (0) | 2023.03.24 |
[TIL] 230322 [python] 함수 실행 시간 측정 (0) | 2023.03.22 |
[TIL] 230321 [알고리즘] [Python] Level1.모의고사 - 코드 축약 (1) | 2023.03.22 |
[TIL] 230320 [Python] or 연산자의 bool타입 연산 (0) | 2023.03.20 |