2013-05-09 14 views
6

Załóżmy, że mam dwie Python funkcje Funkcja 1 i Funkcja 2.Wydajność python podczas przechodzenia duże ilości danych jako parametr funkcji

Funkcja 1 wywoła funkcyjnych 2 i parametr ma duże ilości danych (na przykład, słownik 100 tysięcy elementów).

Zastanawiam się, czy nie ma żadnych różnic między wynikami nazywając Funkcja 2 w Funkcja 1, co oznacza, że ​​muszę zdać duży parametr danych i wdrażania Funkcja 2 w Funkcja 1 bezpośrednio, co oznacza, że ​​nie muszę przekazywać parametru big data.

Dzięki.

PS: Myślę, że kluczowe pytanie brzmi: jak Python przekazać parametr, wartość lub odniesienie (wskaźnik)?

Edycja: Wydaje się, że jest to niejasny problem. How do I pass a variable by reference? to dobra odpowiedź.

+2

Więc jakie były rezultaty, gdy wypróbowałeś obie opcje i ponownie je wyregulowałeś? :) –

+1

Python przechodzi przez referencję, więc powinieneś mieć się dobrze :-) –

+0

@LevLevitsky Testowanie jest w porządku, ale dość często precyzyjna odpowiedź na temat wewnętrznych działań jest lepsza – Basic

Odpowiedz

8

Python przekazuje odniesienia do obiektów według wartości. Terminologia jest kontrowersyjna i brzydka, ale nie powinno być żadnych rzeczywistych różnic w wydajności.

Zapoznaj się z these answers, aby uzyskać wszystkie szczegóły, jakich możesz potrzebować (miejmy nadzieję).

+0

dzięki za linki! – mitchelllc

1

Terminologia, w której python "przechodzi", jest błędną debatą, w którą nie chcę się zaangażować. Ale to, co jest przekazywane na stos, jest odniesieniem. Więc nie ma dużego kosztu pamięci dla żadnej z twoich opcji.

Powiązane problemy