2009-09-13 2 views
26

get_count_and_price라는 라이브러리 함수를 사용하여 2 튜플 (개수, 가격)을 반환합니다. 많은 곳에서 저는 시간과 가격을 모두 사용합니다. 그러나 일부에서는 시간이나 가격 만 필요합니다. 그래서 지금, 내가 단지 카운트가 필요하면, (카운트, 가격)에 할당하고 가격을 사용하지 않은 채로 둡니다.파이썬에서 변수 할당에 해당하는 "패스"가 있습니까?

위대한 작품이며 그 자체로는 문제가되지 않습니다. 그러나

...

내가 PyDev의 이클립스를 사용하고, 새로운 버전 1.5이 자동으로 오류 및 경고를 표시합니다. 표시되는 경고 중 하나는 사용하지 않는 변수입니다. 위의 예에서는 price를 unused로 표시합니다. 이것은 대단한 행동 유형이며 PyDev가 나를 위해이 일을 수행해 주셔서 정말 감사드립니다. 그러나 나는 가격 책정을 생략하고 싶습니다. 이상적으로, 나는 다음과 같이하고 싶다 :

(count,None) = get_count_and_price() 

이제 알 수 있듯이, None은 할당 할 수 없다. 이 경우 내가 할 수있는 다른 것이 있습니까?

은 내가

count = get_count_and_price()[0] 

처럼 뭔가를 할 수 알고 있지만 난 그냥 사람이 더 나은 제안이 있는지 질문하고있다.

답변

29

[0] 첨자를 사용할 때 아무 문제가 없다고 생각하지만 가끔씩 사람들은 "쓸모없는"변수 _를 사용합니다. 실제로 다른 변수 (콘솔에서 특별한 사용법을 사용하는 변수)와 같습니다. 단, 일부 Python 사용자는 규칙을 "폐기"해야한다고 결정한 경우는 예외입니다.

count, _ = get_count_and_price() 

PyDev 문제에 대해서는 어쨌든 [0] 첨자를 사용해야합니다. 그러나 _을 사용하고 싶다면 유일한 해결책은 사용하지 않는 변수 경고를 비활성화하는 것입니다.

+7

주의해야합니다. 인터랙티브 한 파이썬 인터프리터에서'_'은 특별한 의미를 가지고 있으며, 그것에 할당하는 것은 그 마술을 빼앗아 간다는 것을 기억하십시오. – SingleNegationElimination

+0

@ TokenMacGuy : 예 알아요. 나는 비슷한 질문을 여기에 썼습니다. http://stackoverflow.com/questions/818828/is-it-possible-to-implement-a-python-for-range-loop-without -an-iterator-variable/818836 # 818836 – Unknown

+6

Haskell과 Erlang도 _을 "폐기 변수"로 사용합니다. –

3

종종 이렇게합니다.

count, _ = get_count_and_price() 

또는 이클립스에 가면이

count, junk = get_count_and_price() 
7

-> 환경 설정 ... 창, 당신은 실제로 사용하지 않는라면의 PyDev는 무시 변수에 어떤 이름을 지정할 수 있습니다 (내가 찾고 있어요 최신 PyDev 1.5.X).

당신의 PyDev에 가면 -> 편집기 -> 코드 분석 및 당신이 거기에 원하는 다음 사용하는 어떤 이름을 입력

"이름이로 시작하면 사용되지 않는 변수를보고하지 마십시오"라는 마지막 필드를 확인 이 이름은 PyDev가 사용하지 않는 경고를 무시할 변수 이름을 제한합니다.

기본적으로 PyDev는 이름이 "dummy", "_"또는 "unused"로 시작하는 변수에 대해 사용되지 않는 변수 경고를 숨 깁니다.

@TokenMacGuy는 아래에서 말했듯이 파이썬의 특정 시나리오 (특히 대화식 인터프리터에서 사용됨)에서 특별한 의미가 있으므로 "_"을 사용하지 말 것을 권장합니다.

+0

특별한 의미를 지닌'_'에 대해 좋은 지적을하는 동안 인터프리터로서, 필자의 인상은 서면 코드로 다른 특별한 의미 (협약에 의해서만)가 있다는 것은 상당히 널리 이해되고있다. –

20

제안 된대로 _을 사용하면 몇 가지 문제가 발생할 수 있습니다 (대부분 괜찮습니다).우리가 직장에서 사용하는 Python 스타일 가이드 라인에 따르면, 보통 count, unused_price = ...을 사용할 것입니다. 왜냐하면 pylint가 unused_으로 시작하는 barenames에 대한 할당을 무시하도록 구성 되었기 때문입니다. (대신 그러한 barename을 사용하라는 경고!). 그러나 나는 그런 식으로 행동하는 방법을 PyDev에게 지시하는 방법을 모른다!

+3

방금 ​​PyDev 2.2.2로 업그레이드했고, 이제는 기본적으로'unused_' 규칙을 인식하고 경고를주지 않는 것 같습니다 – Jonathan

2

차라리 이러한 이유로, 대신 그것을 _price 이름 것 ​​:

  • 그것은 그것은 다시 쉽게 변경할 수 모두 _

  • 를 사용 gettext에 대화 형 프롬프트와 갈등을 해결 나중에 필요할 경우 price.

  • 다른 사람들이 지적했듯이 맨 앞에 밑줄은 이미 "내부"또는 "사용되지 않은"여러 의미로 사용됩니다.

그래서 코드는 다음과 같이보고 끝낼 것 :

(count, _price) = get_count_and_price() 
1

나는 네크로맨서 배지 후에 갈 것입니다. :)

당신은 PyDev를 사용하고 있다고하셨습니다. PyDev (적어도 최근 버전 - 내가 얼마나 멀리 있는지 확인하지 않았다)에서 "unused"로 시작하는 변수 이름은 사용하지 않는 변수 경고에서 제외됩니다. 하지만 다른 정적 분석 도구는 여전히 불평 할 수 있습니다 (pyflakes는 그렇지만 어쨌든 튜플을 풀고있는 상황에서이 경고를 무시하는 것처럼 보입니다).

관련 문제