argparse를 사용하여 부울 인수를 구문 분석할 때 \'--foo False\'가 True로 평가되는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-10-26 19:05:29
원래의
826명이 탐색했습니다.

Why Does

argparse를 사용하여 부울 값 구문 분석

질문:

argparse를 사용하여 부울 명령줄 인수를 구문 분석할 때 왜 값을 수행합니까? "--foo False"와 같이 False 대신 True로 평가됩니까?

답변:

표준 방법:

The 권장되는 접근 방식은 다음 형식을 사용하는 것입니다.

command --feature
로그인 후 복사

기능을 부정하려면 다음을 사용하세요.

command --no-feature
로그인 후 복사

argparse는 이에 대한 기본 지원을 제공합니다.

  • Python 3.9 : parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
  • Python < 3.9:

    parser.add_argument('--feature', action='store_true')
    parser.add_argument('--no-feature', dest='feature', action='store_false')
    parser.set_defaults(feature=True)
    로그인 후 복사

사용자 정의 구문 분석을 위한 대체 방법:

"--foo True/False" 형식이 선호되는 경우, 옵션은 ast.literal_eval 또는 사용자 정의 함수를 유형으로 사용하는 것입니다.

import ast

def t_or_f(arg):
    ua = str(arg).upper()
    if 'TRUE'.startswith(ua):
        return True
    elif 'FALSE'.startswith(ua):
        return False
    else:
        pass  # Handle error condition appropriately
로그인 후 복사
<code class="python">parser.add_argument("--my_bool", type=ast.literal_eval)
parser.add_argument("--my_bool", type=t_or_f)</code>
로그인 후 복사

이 사용자 정의 함수는 대문자 True/False를 부울 값으로 해석하여 이러한 값을 유연하게 구문 분석할 수 있습니다.

위 내용은 argparse를 사용하여 부울 인수를 구문 분석할 때 \'--foo False\'가 True로 평가되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!