테스트용 클래스를 작성하는 동안 Python의 매개변수가 참조가 아닌 값으로 전달되는 것처럼 보입니다. 이 기사에서는 가정이 올바른지 확인하고 Python에서 참조에 의한 전달을 구현하는 방법을 안내합니다.
Python에서는 인수가 참조에 의해 전달됩니다. , 이는 객체에 대한 참조가 함수에 전달됨을 의미합니다. 그러나 이 참조는 값으로 전달됩니다. 이 동작은 변경 가능한 데이터 유형과 불변 데이터 유형의 차이로 인해 발생합니다.
다음 예를 고려하세요.
def try_to_change_list_contents(the_list): the_list.append('four') outer_list = ['one', 'two', 'three'] try_to_change_list_contents(outer_list) print(outer_list)
목록은 변경 가능하므로 the_list 매개변수는 external_list 개체에 대한 참조입니다. the_list에 'four'를 추가하면 external_list도 수정됩니다.
반대로 문자열이 있는 다음 예를 고려해 보세요.
def try_to_change_string(my_string): my_string = 'Changed' outer_string = 'Original' try_to_change_string(outer_string) print(outer_string)
변경에도 불구하고 함수 내의 my_string 변수는 external_string이 변경되지 않은 상태로 유지됩니다. 이는 문자열이 불변이고 제자리에서 수정될 수 없기 때문에 발생합니다.
원래 변수가 수정되는 참조로 전달을 모방하려면 몇 가지 옵션이 있습니다. :
1. 새 값 반환: 함수는 함수 외부의 원래 변수에 할당할 수 있는 새 값을 반환할 수 있습니다.
2. 객체 속성 수정: 변수가 객체인 경우 함수는 해당 속성 중 하나를 수정할 수 있으며 이는 원래 객체에 반영됩니다.
3. 목록 또는 래퍼 사용: 변수를 목록으로 래핑하고 목록을 함수에 전달할 수 있습니다. 목록을 수정하면 원래 변수에 영향을 미칩니다.
값별 전달 및 참조 메커니즘을 이해하면 Python에서 변수를 원하는 대로 효과적으로 수정할 수 있습니다.
위 내용은 Python은 값별 전달인가요 아니면 참조별 전달인가요? 참조별 전달 동작을 어떻게 달성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!