Python에서 함수 매개변수로 변경 가능 항목 전달
자, 여러분 중 일부는 유형 힌트가 여전히 중요하지 않다고 말할 수 있지만 저는 사실을 부인하고 이렇게 말할 것입니다..
The Python runtime does not enforce function and variable type annotations. They can be used by third party tools such as type checkers, IDEs, linters, etc.
깨끗하고 이해하기 쉬운 코드를 작성하는 데 확실히 도움이 됩니다.
어쨌든 주제에 관해서는, 변경 가능한 객체를 매개 변수로 함수에 전달하고 나중에 조작하려고 시도한 적이 있습니까? 아니? 적어도 위치 인수로는 할 수 없기 때문입니다. 그것은 그냥 실행되지 않으며 그다지 의미가 없습니다.
def pos_func([]):
pass
좋습니다. 이제 통과된 목록에 어떻게 액세스합니까? 당신은 그것을 얻는다.
이제 목록을 키워드 인수로 전달하면 목록에 액세스하는 것은 큰 문제가 아니지만 조작하는 것은 큰 문제입니다.
def keyword_func(num, array=[]):
array.append(num)
return array
print(keyword_func(1))
print(keyword_func(2))
print(keyword_func(3))
출력은 다음과 같을 것으로 예상됩니다.
[1]
[2]
[3]
하지만 아니오, 실제 출력은
[1]
[1, 2]
[1, 2, 3]
그 이유는
The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes.
이 동작을 원하지 않고 후속 호출 간에 기본값을 공유하지 않으려면 대신 다음과 같이 함수를 작성할 수 있습니다.
def keyword_func(num, array=None):
if array is None:
array = []
array.append(num)
return array
모든 호출 간에 개체를 공유하지 않으려면 변경 가능한 개체를 함수에 전달하는 방법입니다.
이것은 여기 dev.to의 첫 번째 블로그였습니다. 이 블로그에 대해 느낀 점을 자유롭게 댓글로 남겨주세요. 다음 블로그는 위치 인수, 키워드 인수, 이들을 함께 사용하고 분리하는 방법에 관한 것입니다. 고맙습니다!
학점:
Type hinting Quote
Type hinting Meme
Reference and Examples
Reference
이 문제에 관하여(Python에서 함수 매개변수로 변경 가능 항목 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vruttant/passing-mutables-as-function-parameters-in-python-1gck텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)