Przekazywanie tablicy / listy do Pythona
Patrzyłem na przekazywanie tablic lub list, jak Python ma tendencję do ich wywoływania, do funkcji.
Czytałem coś o używaniu * args, na przykład:
def someFunc(*args)
for x in args
print x
Ale nie wiem, czy to jest dobre/złe. Nic nie działa tak, jak chcę. Jestem przyzwyczajony do łatwego przekazywania tablic do funkcji PHP i to mnie myli. Wygląda na to, że nie mogę tego zrobić:
def someFunc(*args, someString)
Ponieważ wyrzuca błąd.
Chyba kompletnie się pogubiłam i szukam kogoś do wyjaśnij mi to.4 answers
Kiedy definiujesz swoją funkcję używając tej składni:
def someFunc(*args)
for x in args
print x
Mówisz mu, że oczekujesz zmiennej liczby argumentów. Jeśli chcesz przekazać listę (tablicę z innych języków), zrób coś takiego:
def someFunc(myList = [], *args)
for x in myList:
print x
Wtedy możesz to nazwać tak:
items = [1,2,3,4,5]
someFunc(items)
Musisz zdefiniować nazwane argumenty przed argumentami zmiennych, a zmienne argumenty przed argumentami słów kluczowych. Możesz też mieć to:
def someFunc(arg1, arg2, arg3, *args, **kwargs)
for x in args
print x
Który wymaga co najmniej trzech argumentów, oraz obsługuje zmienne liczby innych argumentów i argumentów słów kluczowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-18 16:13:40
Możesz przekazywać listy tak jak inne typy:
l = [1,2,3]
def stuff(a):
for x in a:
print a
stuff(l)
Wyświetla listę l. pamiętaj, że listy są przekazywane jako referencje, a nie jako głęboka Kopia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-18 20:27:00
Listy Pythona (które nie są tylko tablicami, ponieważ ich rozmiar można zmieniać w locie) są zwykłymi obiektami Pythona i mogą być przekazywane do funkcji jako Dowolna zmienna. Składnia * jest używana do rozpakowywania list, co prawdopodobnie nie jest czymś, co chcesz teraz zrobić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-18 16:14:18
Nie musisz używać gwiazdki, aby zaakceptować listę.
Po prostu podaj argumentowi nazwę w definicji i prześlij na listę taką jak
def takes_list(a_list):
for item in a_list:
print item
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-18 16:13:20