Spędziłem ostatnie kilka godzin czytając tutaj i gdzie indziej, a także eksperymentując, ale tak naprawdę nie rozumiem tego, co na pewno jest bardzo podstawową koncepcją: przekazywanie wartości (jako zmienne) pomiędzy różnymi funkcjami.Python: Przekazywanie zmiennych między funkcjami
Na przykład przypisać całą masę wartości do listy w jednej funkcji, a następnie chcą wykorzystać tę listę w innej funkcji później:
list = []
def defineAList():
list = ['1','2','3']
print "For checking purposes: in defineAList, list is",list
return list
def useTheList(list):
print "For checking purposes: in useTheList, list is",list
def main():
defineAList()
useTheList(list)
main()
podstawie mojego zrozumienia, co funkcja argumenty zrobić, Spodziewamy się, że będzie to robić:
- Zainicjuj "listę" jako pustą listę; zadzwoń do głównego (przynajmniej, wiem, że mam prawo ...)
- W ramach defineAList(), przypisz pewne wartości do listy; następnie prześlij nową listę z powrotem do głównej()
- W obrębie głównej(), użyj wywołaniaTheList (lista)
- Ponieważ "lista" jest zawarta w parametrach funkcji UseTheList, oczekiwałbym, że użycieTheList będzie teraz używać tej listy jak zdefiniowano przez defineAList(), NIE pustą listę zdefiniowaną przed wywołaniem głównego.
Jednak jest to oczywiście błędne zrozumienie. Moje wyjście jest:
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
Tak, ponieważ „powrotu” oczywiście nie robi tego, co myślę, że to robi, a przynajmniej nie robi to tak, myślę, że powinna ... co to właściwie zrobić? Czy mógłbyś mi pokazać, używając tego przykładu, co musiałbym zrobić, aby wziąć listę od defineAList() i użyć jej w useTheList()? Zaczynam rozumieć rzeczy lepiej, gdy widzę, że tak się dzieje, ale wiele przykładów prawidłowego przekazywania argumentów, które widziałem, używa również kodu, którego jeszcze nie znam, i w trakcie ustalania, co się dzieje, Naprawdę nie rozumiem tej koncepcji. Używam 2.7.
ETA - w przeszłości, zadając podobne pytanie, zasugerowano, że używam zmiennej globalnej zamiast tylko lokalnych. Jeśli będzie to miało znaczenie również tutaj - dla celów zajęć, które biorę, nie możemy używać globali.
Dziękujemy!
Dziękujemy za szczegółowe wyjaśnienie również! Wiedziałem, że brakuje mi czegoś podstawowego. :) – user2113818
Proszę nie nazwać rzeczy 'list', tracisz możliwość wywołania wbudowanej' listy' :) –
Nie robię tego, kiedy piszę coś, co zamierzam uruchomić w jakimś celu! – user2113818