파이썬 7

파이썬 itertools.groupby 주의사항. 키가 연속으로 붙어있어야함

조회해온 객체를 같은 키값을 가진 것끼리 묶어서 그루핑하고 로직을 처리할려고 파이썬의 itertools.groupby를 사용 grouped_students = groupby(students, key=lambda x: (x.school, x.grade)) 학생들을 학교, 학년별로 묶음 그런데 잘 작동하지 않아 확인해보니, itertools의 groupby는 순회하면서 하나씩 비교하기 때문에 key값이 같은 요소들끼리 연속적으로 붙어있어야 정상 동작함 sorted(students, key=lambda x: (x.school, x.grade)) 로 먼저 정렬 후 groupby를 적용해야함

[탐험] 테스트하기 좋은 코드, private과 given이 너무 많을 때

대략적으로 공부하고 깨달은 부분이라 정확하지 않을 수 있다. 개발 업무를 해나가면서 계속해서 개선할 내용이니, 일단 참고만 하자 문제상황 테스트 코드를 작성하는데 public 메서드 1개에 여러 개의 private 메서드가 포함되었다. 많은 참조 자료에서 private 메서드를 테스트하는 것은 바람직한 방향이 아니라고 한다. ( 참조 3. 자바에서 private 메서드를 import할 때 Reflection을 사용하게 되는데, Reflection은 컴파일 에러를 유발하지 못하므로 메서드 이름 변경 등에 취약하다. 그리고 애초에 private은 외부 참조가 안되도록 만들어놓고 결합도를 낮추어 놓은 측면이 있는데, 이를 무시하게 되는 것이 된다.) 그러나 각 메서드를 private으로 처리한 것은 정말 해당..

[TIL] 파이썬 단일 메서드 실행 디버깅 - shell_plus

앱의 환경 설정 조건에 구애받지 않고 단일 메서드를 테스트하고 싶다면 아래 명령어로 파이썬 인터프리터를 실행하면 된다. python manage.py shell_plus mac의 경우 python 대신 python3 입력 이후 콘솔창에서 변수를 생성하고, 함수를 import 후 해당 위치의 함수에 break point를 잡고 실행하면 디버깅이 가능하다. 예를 들어서, projects/utils.py 위치에 아래와 같은 메서드가 있다면 def test(name: str) -> str: ... 해당 메서드에 break point를 설정한 뒤 콘솔에서 아래 명령어들을 실행하면 된다. name = "테스트 이름" # 인자값을 변수로 생성 from projects.utils import test # py 파일 i..

[링크] 파이썬 카카오톡 메시지 보내기 요약

https://www.whatwant.com/entry/Python%EC%9C%BC%EB%A1%9C-%EC%B9%B4%EC%B9%B4%EC%98%A4%ED%86%A1-%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B3%B4%EB%82%B4%EA%B8%B0-1 요약 1. 가입 2. 상단 내 애플리케이션 -> 추가 3. 제품 설정 -> 카카오 로그인 -> 활성화 설정 ON 4. 아래쪽 Redirect URI 아무거나 설정 5. 동의 항목 -> 접근 권한 -> 카카오톡 메시지 전송 -> 설정 -> 선택 동의, 동의 목적 대략적 기술 6. 카카오톡 메시지: REST API -> REST API 테스트 도구 -> 액세스 토큰 -> 토큰 발급 -> 선택, 확인 및 동의 7. 하단 부분에서 명세 확인 ->..

카테고리 없음 2023.03.24

파이썬 중급 - 6. 고위 함수(Higher Order Function), 클로저(Closure) 기본

클로저 심화 클로저 개념 제대로 알기 지난 글에서 다뤘던 클로저에 대해서 제대로 알아본다. 외부에서 호출된 함수의 변수값이나 상태를 복사 후 저장하는 것이 클로저의 개념이였다. 이렇게 값을 저장해놓고 나중에 접근할 수 있도록 한다. 함수 내부에 다른 함수를 두어 자유 변수(Free variable)을 기억하도록 만들 수 있다. 평균값을 구하는 averager를 클로저를 이용하여 작성해본다. 처음 closure_ex1을 실행했을 때는 함수 자체가 반환되는 것을 확인할 수 있다. 그리고 나서 변수값을 넣을 때마다, 클로저 영역에 있는 series에 값이 누적되면서 결과가 출력되는 것을 확인할 수 있다. # Closure 사용 def closure_ex1(): # Free variable # 클로저 영역 se..

파이썬 기본 - 4. 입력과 출력, 클래스, 모듈, 패키지, 예외처리, 내장/외장 함수

1. 입력 input() 파이썬에서 값을 입력받을 수 있는 내장함수는 input()이다. number = input("숫자를 입력하세요: ") print(number) open(), write(), close() 파일을 생성하고, 입력하고, 저장하고, 닫는 함수는 각각 open(), write(), close()이다. open 함수의 두번째 인자값은 파일을 열고 입력 모드를 결정하는 인자인데, 'w'는 입력모드, 'r'은 읽기모드, 'a'는 파일의 마지막에 새로운 내용을 추가할 때 사용하는 추가모드이다. 파일은 open을 했으면 항상 close를 해주어야 문제가 발생하지 않는다. 다만 두번째 코드와 같이 with...as 구문을 사용하면 따로 close를 하지 않아도 된다. file = open("C:/..

파이썬 기본 - 3. 조건문, 제어문, 함수

1. 조건문 기본적인 조건문은 다른 언어와 같다. 다만 파이썬은 기본적인 조건문 뒤에 콜론(:)을 작성하여 조건문을 구분한다. 그리고 파이썬의 특성상 들여쓰기를 주의해서 작성해줘야한다. money = True if money: print("택시를 탄다") else: print("걸어 간다") in 조건문 중, 집합에 원소가 포함되어있는지 여부를 검사하는 것은 in 절을 통해서 실행한다. 자바에서의 contains와 동일한 로직이다. 부정은 not in 으로 사용하면 된다. list = [1,2,3] if 1 in list: print("There is One") elif 다른 조건은 else if를 줄인 elif를 사용한다. money = 1000 if money < 1000: print("걸어간다") ..