파이썬 함수 func(A)
이 있습니다. A
은 numpy.array
이고 반복해서 반복해서 복사하는 것을 주저 할 정도로 커질 수 있습니다. 이 func(A)
은 A의 내용을 변경하려고합니다. 이건 파이썬 초보자 문제입니다. 나는 C로 프로그래밍하는 데 익숙했고 포인터로 처리 할 수 있었다. A
의 내용을 변경하여 func(A)
범위 밖에서도 변경 사항을 적용하려면 어떻게해야합니까?python : 함수 매개 변수 업데이트 문제
답변
tl; dr은 귀하의 경우에 기본적으로 이미 있습니다. 메소드에서 레이블 A에 새 값을 지정하지 않으면 A는 전달한 객체에 대한 참조가됩니다. 즉, A에 대한 모든 수정은 원래 객체를 사용하는 다른 곳으로 변경합니다.
예 :
>>> def foo(A):
... print A[0]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> foo(a)
0
2
>>> a
[2, 1, 2]
>>> def bar(A):
... print A[0]
... A = [0, 1, 2]
... A[0] = 2
... print A[0]
...
>>> a = [0, 1, 2]
>>> bar(a)
0
2
>>> a
[0, 1, 2]
+1. 즉,'numpy' 배열은 변경 가능합니다. 그러나 일부 numpy 함수는 복사본을 반환합니다. 어레이를 복제하는 대신 돌연변이를 일으킬 수있는 몇 가지 기본 사항을 설명해 두는 것이 좋습니다. (item assignment, in-place mathematical operations 등) – senderle
+1 C++ 개발자로서 직접, 변수에 반대되는 레이블을 사용하여 파이썬에 대한 내 마음을 감싸는 데 꽤 오래 걸렸습니다. 인터넷 어딘가에 그림이있는 멋진 페이지가있었습니다 ... 이제 어디로 갔습니까? – JoeFish
나는 그것을 얻지 않았다. 할당없이 어레이를 업데이트하려면 어떻게해야합니까? 실제 연산은'A = A + k * C'' k는 스칼라이고 C는 로컬'numpy.array'입니다. 그리고 tl; dr은 무엇입니까? –
A로 전달하는 매개 변수가 전역 매개 변수 인 경우 매개 변수 A의 값을 변경할 수 있습니다. 다른 방법은 변수를 함수에서 함수로 전달하는 것입니다. 에서 나는 파이썬에서 무엇을 이해하는지, 그렇게 할 때 객체는 복사되지 않습니다.
사실, A는 전역 변수가 아니며 클래스의 멤버이고 func는 다른 클래스의 멤버입니다. –
- 1. 콜백 함수 매개 변수 문제
- 2. python : 함수 매개 변수 유효성 확인
- 3. 파이썬 함수 매개 변수
- 4. C 함수 포인터를 매개 변수 인쇄 문제
- 5. PHP 함수 정수 매개 변수 문제
- 6. 자바 스크립트 함수 매개 변수 문제
- 7. 함수 호출로 매개 변수
- 8. 개체의 함수 매개 변수 변수
- 9. jquery의 매개 변수 함수
- 10. 함수 매개 변수
- 11. 함수 매개 변수
- 12. 함수 매개 변수, 다형성
- 13. Powershell : 함수 매개 변수
- 14. CICS 매개 변수 업데이트
- 15. 아약스 업데이트 매개 변수
- 16. 스레드 매개 변수 업데이트
- 17. python open() 함수 문제
- 18. 매개 변수 문제
- 19. Python - 변수 문제
- 20. 공용 변수 함수 문제
- 21. Python : 이름으로 매개 변수 전달
- 22. 다중 매개 변수 'in'in python
- 23. CONST 매개 변수 문제
- 24. 출력 매개 변수 문제
- 25. 재귀 매개 변수 문제
- 26. 매개 변수 전달 문제
- 27. 함수 이름 다음에 함수 매개 변수 선언
- 28. jquery 함수 매개 변수, 객체 및 변수
- 29. 매개 변수 목록에 매개 변수가있는 호출 함수
- 30. struct 생성자 + 함수 매개 변수
이 [이] [1] 유사 게시물에 대한 응답이 귀하의 질문에 대답하지 않습니다? [1] : http://stackoverflow.com/questions/10149416/numpy-modify-array-in-place –
나는 파라미터 전역 변수하지 않을 것을 주장한다고 생각. 그것은 클래스의 멤버 일 수 있습니다. 나는 그것을 시도 할 것이지만 실제 문제는 변수를 함수에 전달할 때 실제로 어떤 일이 일어나는지 알지 못한다. 콘텐츠를 복사하지 않거나 파이썬에서 "참조로 전달"또는 "값으로 전달"과 같은 것이 없습니다. C에서 포인터는 처음에 이해하기 힘들었지 만 이해 했었고 지금은 ... –
이것은 전역과는 아무런 관련이 없습니다. 파이썬에서 모든 인수를 참조로 전달했다고 생각할 수 있습니다. –