파이썬에서 재귀 멤버 함수를 작성하는 중 문제가 발생했습니다. 함수 매개 변수의 기본값을 멤버 변수와 동일한 값으로 초기화 할 수 없습니다. 필자는 매개 변수를 할당하려고 할 때 자체가 정의되어 있지 않으므로 Python이이 기능을 지원하지 않는다고 생각합니다. 그 주위를 코딩 할 수있는 동안, 파이썬에서 함수 오버로딩이 부족하여 내가 시도 할 하나의 확실한 해결책이 없어졌습니다.클래스 멤버 함수 매개 변수의 파이썬 기본값이 멤버 변수로 설정되었습니다.
예를 들어, 링크 된 목록을 재귀 적으로 인쇄하려고하면 다음과 같은 코드가 표시됩니다.
def display(self,head = -1):
if head == -1:
head = self.head
if not head:
return
print head,
self.display(head.link)
이 코드가 작동하는 동안, 그것은 추합니다. 주요 기능은 다음과 같습니다
def main():
l = List();
l.insert(3);
l.insert(40);
l.insert(43);
l.insert(45);
l.insert(65);
l.insert(76);
l.display()
if __name__ == "__main__":
main()
나는 그것이 매개 변수없이 호출하면 다음이 훨씬 좋네요 보일 것 self.head을 기본값으로 표시 기능 매개 변수를 설정할 수 있습니다합니다. 필자는 처음에 두 개의 매개 변수를 취하는 함수와 하나를 취하는 함수의 두 가지 버전을 만들려고했지만 파이썬은 오버로드를 지원하지 않습니다. 인수 목록을 전달하고 인수의 수를 확인할 수는 있지만 꽤 못생긴 것입니다 (Perl처럼 보일 수 있습니다!). 문제는, 만약 내가 라인을 넣으면 head = self.head 이 함수 본문 안에 있고, 그것은 모든 재귀 호출 동안 호출 될 것이고, 그것은 필자가 필요로하지 않는 행동이다. None은 head 변수에 유효한 값이기 때문에 기본값으로 전달할 수 없습니다. 기본적으로 -1을 사용하여 초기 함수 호출에 있고 재귀 호출에 있음을 알고 있습니다. 나는 두 개의 함수를 작성할 수 있다는 것을 알았습니다. 하나는 다른 하나의 함수를 쓰지 만, 하나의 재귀 함수에 모든 것을 포함시켜야합니다. 나는 누군가가 pythonic 접근법으로 나를 도와 줄 수 있을지에 관해서 여기에 기본적인 pythonic 원리를 놓치고 있다고 확신한다.
감사합니다.
표시 기능의 들여 쓰기를 수정하십시오. –