끝나지 않는 점프 투 파이썬..
오늘도 시작
1.
readline()은 더이상 읽을 줄이 없을 경우 빈 문자열('')을 리턴한다.
2.
프로그램 외부에 저장된 파일을 읽는 여러가지 방법 중에 readline 함수를 이용하는 방법이 있었다면
readlines 함수를 사용하는 방법도 있다.
readlines는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다.
먼저 num.txt는 다음과 같다.
1111
2222
3333
이제 f.readlines()를 이용해 외부에 저장된 num.txt라는 파일을 읽어보자.
f = open("num.txt", 'r',encoding="utf-8")
lines = f.readlines()
for line in lines:
print(line)
f.close()
1111
2222
3333
3.
그냥 readline()과 readlines()을 단독으로 이용해 외부의 파일을 읽을 때는 문제점이 있다.
외부의 파일을 만들 때, 단순히 줄 바꿈을 하고 싶었을 뿐인데 그걸 읽을 때는 빈 줄과 함께 출력된다는 것이다.
이걸 해결할 수 있는 방법이 있다.
파일을 읽을 때 줄 끝의 줄 바꿈 문자(\n)를 제거하는 것이다.
strip() 함수를 사용하면 줄 바꿈 문자(\n)를 제거할 수 있다
f = open("num.txt", 'r',encoding="utf-8")
lines = f.readlines()
for line in lines:
line = line.strip()
print(line)
f.close()
1111
2222
3333
strip()함수를 사용할 때는 반드시
line = line.strip()
와 같은 변수 저장을 해줘야 한다.
**틀린 예
이렇게 하면 안된다.
변수 저장을 안하고 그냥 line.strip() 이렇게만 한다거나...
f = open("num.txt", 'r',encoding="utf-8")
lines = f.readlines()
for line in lines:
line.strip()
print(line)
f.close()
왜냐? 아래와 같이 출력되기 때문이다.
1111
2222
3333
strip()이 제 기능을 못한다.
4.
3을 배우다가 갑자기 의문이 생겼다.
f.close() 처럼 변수 저장을 안 해도 되는 함수가 있는 반면, line = line.strip() 처럼 변수 저장을 해야 하는 함수가 있다.
이걸 뭐라고 하지???
구글에 뭐라고 쳐야할지도 모르겠어서 이와 비슷한 예를 생각해봤다.
sort 와 sorted가 그랬던 것 같았다.
변수 a에 리스트가 저장되어있다고 할 때,
sort는 a.sort() 해줘야 하는 반면, sorted는 a=sorted(a) 를 해줘야 한다.
*sort()는 리스트를 제자리에서(in-place) 수정하는 내장 메소드(built-in method) 이다.
sort는 리스트명.sort( ) 형식으로 "리스트형의 메소드"이며 리스트 원본값을 직접 수정한다.
*sorted()는 이터러블로 부터 새로운 정렬된 리스트를 만드는 내장함수이다.
sorted는 sorted( 리스트명 ) 형식으로 "내장 함수"이며 리스트 원본 값은 그대로이고 정렬 값을 반환한다.
그러면 내장 메소드와 내장 함수의 차이는 뭘까?
내장함수(built-in fuction)
- python 언어 자체에서 제공하는 함수
- 함수 이름으로 독립적으로 호출됨.
- 어떤 객체와도 무관하게 적용, 호출됨
메소드(method)
- 특정 객체(object)에 적용되는 함수
- 각 데이터 타입별로 메소드가 별도로 존재.
- 특정 객체(object)에 종속되어 적용 호출됨.
- 메소드 이름만으로 호출 불가. 객체와 함께 호출됨
- object명.method명(파라미터)로 호출,실행됨.
[점프 투 파이썬]
[출처]
-sort와 sorted
-메소드, 내장 함수 차이
'Python' 카테고리의 다른 글
[sw expert acadmey] 1859. 백만 장자 프로젝트 (0) | 2022.01.19 |
---|---|
220117 학습일기 (0) | 2022.01.18 |
220115 학습일기 (0) | 2022.01.15 |
220112 학습일기 (0) | 2022.01.14 |
220109 학습일기 (0) | 2022.01.10 |