본문 바로가기

Performance14

Python sys.stdout.write와 print의 차이점은 무엇인가요?, The difference between sys.stdout.write and print? 질문 어떤 상황에서 sys.stdout.write()가 print보다 선호될까요? (예시: 더 나은 성능; 더 의미 있는 코드) 답변 print은 주어진 객체의 write 함수를 호출하고 입력을 형식화하는 역할을 하는 간단한 래퍼입니다. 기본적으로 이 객체는 sys.stdout입니다. 그러나 "chevron" 형태를 사용하여 파일을 전달할 수도 있습니다. 예를 들면: print >> open('file.txt', 'w'), 'Hello', 'World', 2+3 참조: https://docs.python.org/2/reference/simple_stmts.html?highlight=print#the-print-statement Python 3.x에서는 print가 함수가 되지만, file 인자를 사용하여.. 2023. 10. 16.
Python 모듈의 import 문은 항상 맨 위에 있어야 합니까?, Should import statements always be at the top of a module? 질문 PEP 8는 다음과 같이 명시합니다: 임포트는 항상 파일의 맨 위에 위치하며, 모듈 주석과 독스트링 바로 다음에 오고, 모듈 전역 변수와 상수 앞에 위치합니다. 하지만 내가 임포트하는 클래스/메소드/함수가 드물게 사용되는 경우, 필요할 때만 임포트하는 것이 더 효율적이지 않을까요? 이렇게 하는 것이: class SomeClass(object): def not_often_called(self) from datetime import datetime self.datetime = datetime.now() 이렇게 하는 것보다 더 효율적이지 않을까요? from datetime import datetime class SomeClass(object): def not_often_called(self) self.d.. 2023. 10. 9.
Python 리스트 vs 튜플, 각각 언제 사용해야 하나요? [중복], List vs tuple, when to use each? [duplicate] 질문 파이썬에서는 언제 리스트를 사용하고 언제 튜플을 사용해야 할까요? 가끔 선택의 여지가 없을 때도 있습니다. 예를 들어 "hello %s you are %s years old" % x 이렇게 할 경우 x는 튜플이어야 합니다. 하지만 API를 디자인하고 데이터 유형을 선택할 수 있는 사람이라면 가이드라인은 무엇일까요? 답변 튜플은 고정 크기입니다. 반면에 리스트는 동적입니다. 다른 말로, 튜플은 불변이고 리스트는 가변입니다. 튜플에 요소를 추가할 수 없습니다. 튜플에는 append나 extend 메서드가 없습니다. 튜플에서 요소를 제거할 수 없습니다. 튜플에는 remove나 pop 메서드가 없습니다. 튜플에서 요소를 찾을 수 있습니다. 이는 튜플을 변경하지 않기 때문입니다. in 연산자를 사용하여 튜플.. 2023. 10. 9.
Python 리스트의 불규칙한 (임의로 중첩된) 리스트를 평평하게 만듭니다., Flatten an irregular (arbitrarily nested) list of lists 질문 네, 저는 이 주제가 이전에 다뤄졌다는 것을 알고 있습니다: Python idiom to chain (flatten) an infinite iterable of finite iterables? Flattening a shallow list in Python Comprehension for flattening a sequence of sequences? How do I make a flat list out of a list of lists? 하지만 내가 알기로는, 하나를 제외한 모든 해결책들은 [[[1, 2, 3], [4, 5]], 6]와 같은 리스트에서 실패합니다. 여기서 원하는 출력은 [1, 2, 3, 4, 5, 6]입니다 (아니면 더 좋게는 반복자). 내가 본 유일한 해결책은 임의의 중첩에 대해.. 2023. 10. 6.