2023. 3. 17. 02:04ㆍ독서
안녕하세요!
<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.
오늘은 11장 '모듈과 패키지'에 대해 이어서 학습할게요.
이번이 마지막 시간이네요
오늘 공부할 내용은 다음과 같습니다.
🧐 공부할 내용(p.382~395)
* 내장 함수 사용하기
* 외장 함수 사용하기
1. 내장 함수 사용하기
책에서는 내장 함수를 어떻게 하면 사용할 수 있는지에 대해 설명해 줍니다.
우리는 이미 많은 내장 함수를 써왔어요.
len(), input(), int(), str() 등등 다양한 내장 함수를 사용했죠.
우리는 모든 내장 함수를 기억하지 못합니다.
하지만 우리는 dir()이라는 함수를 사용해서 해당 객체가 어떤 내장 함수를 사용할 수 있는지 확인할 수 있습니다.
책에서는 dir함수를 이용해서 random 모듈, pickle 모듈, string 객체가 사용할 수 있는 함수를 확인하고 있어요.
🥕멘토 TIP
어떻게 사용하는지는 매우 간단하기 때문에 저는 string 객체에서 사용할 수 있는 몇 가지 유용한 메서드를 알려드릴게요.
먼저 dir()을 통해서 문자열 객체가 어떤 메서드를 사용할 수 있는지 출력해 봅시다.
name = "Jin"
print(dir(name))
그러면 이렇게 많은 함수들이 나오는 것을 볼 수 있어요. (사실은 메서드죠)
그중에서 저는 알고리즘 테스트에서 매우 많이 사용되는 split 메서드와, strip 메서드에 대해서 알아볼게요.
1) split 메서드
split 메서드는 이름 그대로 문자열을 자르는 데 사용됩니다.
이렇게 사용하죠.
s = "abc def"
print(s.split())
print() 문에 출력되는 것을 확인하셨나요?
리스트가 출력됩니다. 그러니까 split() 메서드는 list를 반환하는 메서드인 것이죠.
split() 메서드는 아무 인자도 넘겨주지 않으면 공백을 기준으로 문자열을 자르게 됩니다.
위 예시에선 아무 인자도 넘겨주지 않았기 때문에 공백을 기준으로 abc와 def 둘로 나뉘었죠.
그럼 인자를 줘보죠.
s = "abc,def"
print(s.split(","))
이렇게 되면 쉼표를 기준으로 자르게 됩니다.
쉽죠?
제가 이것을 알려드리는 이유는 입출력을 받을 때 매우 유용하기 때문입니다.
a,b = input().split()
print(a)
print(b)
주로 코드를 이렇게 사용합니다.
split()은 공백을 기준으로 자르기 때문에 "1 2"(따옴표 제외)라고 입력하면 a에는 1이, b에는 2가 담길 것입니다.
정말 유용한 메서드랍니다!
2) strip 메서드
strip메서드는 문자열 양쪽 공백이 있을 경우 공백을 제거해 줍니다.
s = " abc "
s = s.strip()
print(s)
print(len(s))
s라는 문자열에 양쪽으로 공백이 많이 있는 것을 볼 수 있습니다.
strip() 메서드를 사용하면 양쪽의 공백을 모두 제거해 줍니다.
정말인지 확인하려면 밑에 두 print문을 실행하면 됩니다.
그러면 정상적으로 abc와 3이 출력됩니다.
🥕멘토 TIP
질문을 올리시는 분들 중에 제가 답글로 간혹 공식 문서를 언급하면서 설명을 드릴 때가 있습니다.
이렇게 궁금한 점이 생기면 공식 문서를 찾아보면 문제가 쉽게 해결될 때가 많습니다.
여기에서 궁금한 메서드를 검색하시면 쉽게 정보를 찾을 수 있습니다.
2. 외장 함수 사용하기
파이썬의 외장 함수는 파이썬의 lib 폴더에 존재하지만 import를 해서 사용해야 하는 함수를 말합니다.
이를테면 random, math에 속해 있는 함수 같은 것을 말하는 것이죠.
파이썬의 외장 함수는 여기서 확인하실 수 있습니다.
https://docs.python.org/3/py-modindex.html
책에서는 3가지 외장 모듈과 함수에 대해 설명하고 있습니다.
1) glob
glob 모듈은 어떤 경로에 있는 폴더 또는 파일 목록을 조회할 때 사용된다고 하죠.
책에서는 같은 경로에 있는. py 확장자를 가진 파일들을 모두 조회하는 코드를 작성했지만,
이것 말고 다른 경로에 있는 파일도 모두 조회가 가능합니다.
import glob
print(glob.glob("./travel/*.py"))
이전에 travel 모듈을 만들어서 사용한 적이 있죠?
이렇게 travel 모듈 안에 어떤 파이썬 파일이 있는지 확인하는 코드를 작성할 수 있습니다.
2) 운영체제의 기본 기능 모듈
사실 운영체제가 지원하는 기능은 너무 많아서 다 살펴볼 수 없고 책에 있는 기능을 같이 살펴보도록 합시다.
p.391의 예제를 같이 보죠.
import os
folder = "sample_dir"
if os.path.exists(folder):
print("이미 존재하는 폴더입니다.")
os.rmdir(folder)
print(folder, "폴더를 삭제했습니다.")
else:
os.makedirs(folder)
print(folder, "폴더를 생성했습니다.")
os.path.exists로 폴더가 존재하는지 확인합니다.
exists는 단순한 폴더뿐만 아니라 파일, 경로 등 다양한 것을 넘겨줄 수 있습니다.
rmdir은 디렉토리를 삭제하는 메서드입니다.
makedirs은 디렉토리를 생성하는 메서드이고요.
🥕멘토 TIP
rmdir과 makedirs는 리눅스에서 사용하는 명령어와 이름이 같거나 비슷합니다.
rmdir은 실제로 리눅스에서 사용하는 명령어입니다.
rmdir [option] [삭제할 폴더]
# rmdir -rf travel 강제삭제
이렇게 사용하죠.
makedirs는 리눅스에서는 mkdir을 사용합니다.
mkdir travel2
이렇게 말이죠.
3) 시간 관련 모듈
시간에는 크게 time과 datetime을 많이 사용합니다.
저는 datetime에 대해서 설명드리고 싶어요.
import datetime
today = datetime.date.today()
td = datetime.timedelta(days=100)
print("우리가 만난지 100일은", today + td, "입니다.")
이는 날짜 더하기를 활용한 방법입니다.
그럼 빼기는 어떨까요?
import datetime
today = datetime.date.today()
td = datetime.timedelta(days=100)
print("우리는 100일 전", today - td, "에 만났습니다.")
간단합니다.
그럼 문자열을 날짜로 바꿀 수 있을까요? 가능합니다.
import datetime
today = "2023-03-17"
date = datetime.datetime.strptime(today, "%Y-%m-%d").date()
td = datetime.timedelta(days=100)
print("우리가 만난지 100일은", date + td, "입니다.")
이렇게 말이죠.
사실 위 코드는 정말 정말 유용합니다. 다양하게 활용이 가능하기 때문이죠.
액셀에 있는 날짜를 변환한다든가 하는 경우에 말이죠.
이외에도 datetime 모듈은 많은 기능을 제공합니다.
다른 기능이 궁금하시다면 공식문서를 통해서 학습해 주세요!
이번 시간에는 내장 함수와 외장 함수에 대해서 알아봤어요.
그리고 책의 마지막장까지 달려왔습니다!
모두들 11장까지 공부하시느라 고생 많으셨습니다.
이 책을 통해서 프로그래밍과 한층 더 가까워졌기를 바라요!
✅ 정리
* 내장 함수 사용하기
* split 메서드
* strip 메서드
* 외장 함수 사용하기
* glob 모듈
* os 모듈
* datetime 모듈
'독서' 카테고리의 다른 글
[도메인 주도 설계 철저 입문] 2장. 시스템 특유의 값을 나타내기 위한 '값 객체' (0) | 2024.08.26 |
---|---|
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.369~381) (1) | 2023.03.16 |
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.363~368) (0) | 2023.03.15 |
(나도코딩의 파이썬 입문) 11장. 모듈과 패키지(p.353~362) (0) | 2023.03.14 |
(나도코딩의 파이썬 입문) 10장. 예외 처리(p.338~345) (0) | 2023.03.13 |