제목은 파이썬 스크립트에서 전달하고자하는 perl 관용구를 보여줍니다. 나는 이것이 나쁜 연습으로 해석 될 수 있음을 깨닫는다. 잠재적으로 예외 처리의 결핍 때문이다. 그럼에도 불구하고 (일회용/개인용) 유틸리티에서 이러한 작업을 수행함에있어서 가치를 발견합니다.
답변
파이썬에는 Perl과 같은 다양한 종류의 변수 개념이 없습니다. 스칼라, 목록 및 사전은 모두 동일한 종류의 변수에 저장됩니다. 따라서이 "관용구"는 적용 할 수 없습니다. 반환 된 값을 직접 사용하십시오.
몇 가지 예를 펄 코드 :sub foo {
return [ qw(a b c) ];
}
@list = @{foo()};
say $list[0];
say $list[1];
say $list[2];
동등한 파이썬 코드 :
def foo():
return ("a", "b", "c")
list = foo()
print list[0]
print list[1]
print list[2]
난 당신이 예외 처리의 부족을 참조 할 때 의미 할 수 무엇인지 전혀 모른다.
제 질문은 저조한 표현일지도 모릅니다. 아주 간단합니다. 이것을 달성 할 수있는 방법이 있습니까? obj.method() [ 'key']! = 0 – user2390378
@ user2390378 물론입니다. 예제 코드에 따라'print foo() [0]'는'a'를 출력합니다. – Oktalist
죄송합니다. 침몰하는 데 시간이 걸렸습니다. 지난 밤에 스타 트렉의 자정을 보여 줬음에 틀림 없습니다 :) – user2390378
이 질문에 대한 세 글자의 대답은 다음과 같습니다.
더 긴 대답 : 파이썬에는 참조가 없습니다. tuplerefs 나 dictrefs가 없으며 이들을 반환하는 함수가 없으며 호출자가 tupleref 나 dictrefs를 터플이나 사전으로 변환 할 수있는 방법이 없습니다. 동등한 것은 없습니다.
이 펄 :
sub foo {
qw/a b c/
}
my @array = foo;
print $array[0];
print $array[1];
print $array[2];
은 다른 대답은 파이썬에 다른 대답 펄보다는 '덜 해당하는'되지 않습니다.
Perl의 다른 비트와는 다르다.
my @array = (this_foo(), this_foo(), this_foo());
# @array is now: ('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'), and one-dimensional.
my @array = (that_foo(), that_foo(), that_foo());
# @array is now: (['a', 'b', 'c'], ['a', 'b', 'c'], ['a', 'b', 'c']), and two-dimensional.
그러나이 점이 파이썬에게는 전혀 도움이되지 않습니다.
파이썬은 엄격하게 입력됩니다. 'obj.method (args)'가 순차 (-) 값을 반환하면 그냥 시퀀스로 사용하십시오. 매핑 (-) 값을 반환하면 매핑으로 사용하십시오. –
관용적 인 Perl이 익숙하지 않은 Pythonist에게 대답하기를 희망하는 사람들은 실제로 관용어가 수행해야하는 것을 설명하고 예제를 제공 할 수 있습니까? 그 자체로 질문 자체는 실제로 내용을 가지고 있지 않습니다. – millimoose
-1 :이 질문은이 관용구가 무엇을하는지 설명하지 않음으로써 미래의 많은 잠재적 인 독자들과 파이썬 중독자들을 멀어지게 만듭니다. –