여러 도구에서 -verbose
또는 -v
를 알고 있으며이를 일부 내 스크립트 및 도구에 구현하고 싶습니다.
나는 배치를 생각했다 :
if verbose:
print ...
사용자가 -v
옵션을 전달하면 verbose
변수가 True
로 설정되고 텍스트가 인쇄.
이것이 올바른 접근 방식입니까 아니면 더 일반적인 방법이 있습니까?
추가 : 인수 구문 분석을 구현하는 방법을 요구하지 않습니다. 나는 그것이 어떻게 행해지는지 압니다. 나는 verbose 옵션에만 특별히 관심이 있습니다.
해결 방법
내 제안은 기능을 사용하는 것입니다. 하지만 함수에 if
를 넣는 것이 아니라, 다음과 같이하십시오.
if verbose:
def verboseprint(*args):
# Print each argument separately so caller doesn't need to
# stuff everything to be printed into a single string
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None # do-nothing function
(예, if
문에 함수를 정의 할 수 있으며 조건이 참인 경우에만 정의됩니다!)
print
가 이미 함수 인 Python 3을 사용하는 경우 (또는 from __future__ import print_function
) 더 간단합니다.
verboseprint = print if verbose else lambda *a, **k: None
이렇게하면 verbose
플래그를 지속적으로 테스트하는 대신 verbose 모드가 꺼져 있으면 (람다 사용) 함수가 아무것도하지 않는 것으로 정의됩니다.
사용자가 프로그램을 실행하는 동안 상세 모드를 변경할 수 있다면 이는 잘못된 접근 방식입니다 (함수에 if
가 필요함). 명령 줄 플래그로 설정하는 경우 한 번만 결정하면됩니다.
그런 다음 예를 사용합니다. "verbose"메시지를 인쇄하고자 할 때마다 verboseprint ( "look at all my verbosity!", object (), 3)
.
참조 페이지 https://stackoverflow.com/questions/5980042
'파이썬' 카테고리의 다른 글
파이썬 BaseHTTPRequestHandler.do_POST ()에서 HTTP 메시지 본문을 추출하는 방법은 무엇입니까? (0) | 2020.10.03 |
---|---|
파이썬 파일 / 디렉토리의 내용을 모니터링 하시겠습니까? (0) | 2020.10.03 |
파이썬 제거하지 않고 집합에서 요소를 검색하는 방법은 무엇입니까? (0) | 2020.10.03 |
파이썬 Python에서 객체 목록 검색 (0) | 2020.10.03 |
파이썬 re.sub 그룹 : \ number 뒤의 숫자 (0) | 2020.10.02 |
댓글