기초 - 복습2
2배속으로 강의 들으면서 대충 기억날랑말랑한 녀석들 정리
파이썬 가상환경 설치
- 프로젝트 폴더에서 터미널 실행 후 아래 명령어 입력
python -m venv {venv 폴더이름}
- python Interpreter(ctrl+shift+p) 에서 가상환경을 선택
string에서 index 찾기
test = "강고트"
test.find("강")
# a.jpg만 찾고싶을 때
path = "c:\\test\\goat\\ganggoat\\a.jpg"
path[path.rfind("\\") + 1:]
path.split("\\") # 다 쪼개져서 나옴
- isdecimal : 10진수인지
- isdigit : 아라비아숫자인지
- isnumeric : 숫자인지
대충 리스트 다루기
a = [1, 2, 3, 4]
a.append(5)
a.insert(0, 0)
del a[1]
파일 읽고 쓰기
줄바꾸고 싶을 때 역슬레시 하나 넣어주면 된다…? 이건 몰랐네 ```python file1 = open(“sample.txt”, mode=”w”, encoding=”utf-8”) file1.write(“강고트의 파이썬 복습”) file1.close()
with open(“sample.txt”, mode=”r”, encoding=’utf-8’) as f1,
open(“sample2.txt”, mode=”w”, encoding=’utf-8’) as f2:
f2.write(f1.read().replace(‘파이썬’, ‘python’))
아직 별로 기억할만한 내용이 없다...
일단 입력된 문자열은 무조건 문자열형태로 입력된다.
# 요약2 -
## module
#### __name__
- 제일 먼저 실행하는 파일의 이름은 __main__이 된다.
#### time
- time.time() 현재시간을 초로 나타냄. 저장해두었다가 나중에 저장한 시간으로부터 몇 초 지났는지 계산가능
```python
a = time.time()
print(time.time() - a)
데코레이터
- 이미 작성된 코드에 새로운 기능을 추가하여 함수 기능을 확장시키는 개념
- 파이썬에서 함수는 일급객체
- 클로저를 사용하여 함수 안에 함수를 정의할 수 있음
작동시간을 체크하는 함수의 예
import time
def test():
start_time = time.time()
for i in range(5):
time.sleep(0.1)
end_time = time.time() - start_time
print(f"함수 동작 시간 : {end_time}")
- 하지만 이렇게 하면 함수가 복잡해지고 다른 함수의 시간을 테스트하기 어려워 지니까,
함수를 매개변수로 받아서 작동시간을 테스트하는 함수를 만들 수 있다.
def time_checker(func):
def inner_function(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"함수 {func.__name__}의 동작시간 : {end_time - start_time}")
return result
return inner_function
@time_checker
def test1():
for i in range(5):
time.sleep(0.1)
@time_checker
def test2():
for i in range(3):
time.sleep(0.1)
test1()
test2()
- 위와 같은 형태로, @를 이용해서 데코레이터로 활용할 수 있다.
참고 : 데코레이터 사용 시 doc과 name 유지하는 법
- 데코레이터를 사용하면 __name__이나 __doc__이 정상적으로 작동하지 않는데, 이를 해결하기 위한 방법은 아래와 같다. ```python from functools import wraps
def time_checker(func): @wraps(func) def inner_function(args, **kwargs): result = func(args, **kwargs) return result return inner_function ```
댓글남기기