Python에서 참조로 변수 전달
Python 인수는 값으로 전달되며, 호출된 함수는 원래 변수의 복사본을 받습니다. 이는 함수가 원래 변수에 대한 참조를 받아 직접 수정할 수 있는 참조별 호출과는 다릅니다.
변경 가능한 변수와 불변 변수
Python에서 일부 데이터 유형은 변경 가능하지만(예: 목록, 사전) 다른 데이터 유형은 변경 불가능합니다(예: 문자열). 변경 가능한 변수를 전달할 때 함수는 내용을 변경할 수 있지만, 변경할 수 없는 변수를 전달하면 함수는 이를 수정할 수 없습니다.
Python의 값별 전달 동작
예를 들어 다음 코드를 고려해보세요.
class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed'
이 클래스의 인스턴스가 생성되면 출력은 다음과 같습니다. "원래의". 이는 "change" 메소드의 매개변수 "var"가 "variable" 속성의 복사본이고 메소드 내에서 "var"에 대한 변경 사항이 메소드 외부의 원래 변수에 영향을 주지 않기 때문입니다.
참조별 전달 동작에 대한 해결 방법
Python은 참조별 호출을 직접 지원하지 않지만 이를 시뮬레이션하는 해결 방법이 있습니다. 동작.
반환 값:
함수는 수정된 변수를 반환할 수 있으며, 이 변수는 함수 외부의 원래 변수에 할당될 수 있습니다.
래퍼 클래스 또는 목록:
변경 가능한 래퍼 클래스 또는 목록은 변수를 보관하는 데 사용됩니다. 래퍼를 함수에 전달하면 함수는 보유된 변수를 수정할 수 있으며 변경 사항은 반환될 때 래퍼에 반영됩니다.
결론
Python에서는 진정한 참조별 호출을 지원하지 않으므로 제공된 해결 방법을 통해 개발자는 변경 가능 및 불변 데이터 유형 모두에 대해 이 동작을 시뮬레이션하여 코드 설계의 유연성을 높일 수 있습니다.
위 내용은 Python은 참조별 동작을 어떻게 시뮬레이션합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!