입력 매개 변수 중 하나가 문자열 인 Python 함수 (2.7)를 작성했습니다. 문자열 값은 몇 가지 값 중 하나 여야합니다. 매개 변수 즉 함수 입력 파이썬에 대한 문자열 옵션
가,이 경우 "일종의"목록 [ '주 저자' '마지막 저자의'제목 ']에서 하나가 될 수편안한 있는가 (목록은 더 이상 조금 실제로) 사용자가이 입력을 (탭 완성을 통해) 제공하도록 돕는 방법. 궁극적 인 목표는 사용자 인터페이스를 개선하고 개선하여 코드를 사용하고 실수를 줄이는 것이 더 쉽습니다.
옵션 1 : 정의 상수
이 최선의 선택이 될 수 있지만이 일을 여러 가지 방법이 있습니다. 내 접근 방식은 아래와 같습니다.
함수가 상주하는 모듈에서 상수를 만드는 것을 고려하고 있지만 이것은 어수선해 보입니다. 내 현재의 해결책은 옵션이있는 클래스를 포함하는 것이지만, 속임수를 쓰지 않고 무의미하고 짧게 만드는 것이 아니라면 입력을 실제로 길게 만든다 (이것은 내가 한 일이지만 잘못되었거나 분명한 것처럼 보인다). 어떻게해야합니까?
옵션 2 : 비아 해석 문서
참고 : 나는
내가 편집자 수행하는 데 사용할 수있는 문서에 코드를 삽입의 아이디어를 좋아 ...이 옵션은 실제로 존재 생각하지 않는다 탭 완료,하지만 난이 옵션이 기존의 인식하지 못합니다.다른 옵션은 있습니까?
현재 코드 (약) :
class C():
SORT_FIRST_AUTHOR = 'first author'
SORT_LAST_AUTHOR = 'last author'
SORT_TITLE = 'title'
#Ideally these might be selected by: my_module.search.sort_option.FIRST_AUTHOR instead of my_module.C.FIRST_AUTHOR but that's REALLY long
def search(query_string,sort = None): #Changed sort = [], to sort = None per comments
UPDATE :
이 내가 생각하지만 대답은 난 것과 분기,이 질문에 다소 유사하다 (질문을 명확히하기 위해 노력) 질문의 특성 때문에 찾고 있습니다.
Pythonic way to have a choice of 2-3 options as an argument to a function
이상적으로, 내가 가진 사양에서 "종류"에 탭 완성 할 수 있도록 검색()의 정의를 좋아하는 것, 무엇인가 :
def search(....):
"""
:param sort:
:values sort: 'first author'|'last author'|'title'
"""
, 나는 잘 모르는 것 같아요 실제로 유효한 문서 옵션입니다.
대안 내가 호출이되도록이 수 몇 가지 상수를 정의 할 수 있습니다 :
검색 (my_a, my_b, package_name.C.SORT_FIRST_AUTHOR)
그러나이 추하고 잘못된 것 같다.
그래서 사용자가 일련의 옵션 중에서 하나를 전달하도록하려면 어떻게해야합니까?
처음에는'[]]을'sort'의 기본값으로 사용하지 마십시오. [이유] 때문에 (http://stackoverflow.com/questions/1132941/least-astonishment-in-python-the- mutable-default-argument). – roippi
그것은 나만인가, 아니면 당신이 무엇을 요구하고 있는지 분명하지 않은가? –
@roippi이 호출은 서버로 전송됩니다. http 요청에서 매개 변수를 생략하면 기본값을 사용해야 함을 나타냅니다. – Jimbo