W języku Python 2.x, print
to instrukcja, a nie funkcja. Jeśli spróbujesz tego w Pythonie 3.x, to zadziała.
W języku Python 2.x można powiedzieć: print(x)
i nie jest to błąd składniowy, ale w rzeczywistości nie jest to wywołanie funkcji. Podobnie jak 1 + (3)
jest taki sam jak 1 + 3
, print(x)
jest taki sam jak print x
w Pythonie 2.x.
w Pythonie 2.x można to zrobić:
def prn(x):
print x
Następnie można zrobić:
map(prn, lst)
i będzie działać. Zauważ, że prawdopodobnie nie chcesz wykonywać lst = map(prn, lst)
ponieważ prn()
zwraca None
, więc zastąpisz listę wartości tą samą długością o wartości tylko None
.
EDYCJA: Dwa inne rozwiązania dla Python 2.x.
Jeśli chcesz całkowicie zmienić zachowanie print
, można to zrobić:
from __future__ import print_function
map(print, lst)
To sprawia print
do funkcji tak jak to jest w Pythonie 3.x, tak to działa z map()
.
Albo można to zrobić:
from pprint import pprint
map(pprint, lst)
pprint()
to funkcja, która drukuje rzeczy i jest on dostępny jako wbudowany. Nie jestem do końca pewien, jak to się różni od domyślnego print
(mówi, że jest to funkcja "ładnego druku", ale nie jestem pewien, jak dokładnie to czyni).
Ponadto, zgodnie ze standardem PEP 8, niezalecane jest używanie l
jako nazwy zmiennej, dlatego w moich przykładach używam lst
.
http://www.python.org/dev/peps/pep-0008/
Nie wybuchnie, ale najprawdopodobniej nie zadziała zgodnie z oczekiwaniami. Chyba clwen chciał wydrukować rzeczy i nie dostać '. Jeśli chcesz go wydrukować, musisz wykonać iterację nad obiektem mapy. –
Nie jestem pewien, co masz na myśli mówiąc "to się nie podniesie" ... jeśli spróbujesz uruchomić 'map (print, [])' w Pythonie 2.x otrzymasz 'SyntaxError: invalid syntax' ponieważ' print 'jest stwierdzeniem. Musiałeś wypróbować to w Pythonie 3.x, gdzie 'print' jest funkcją i jest całkowicie legalne przekazanie go do' map() '. W Pythonie 2.x 'map()' zwraca listę, a nie '
Miałem na myśli: Tak, masz rację, 'map (print, [])' nie będzie wysadzać w powietrze (wyrzucać wyjątku) w Pythonie 3. Ale chociaż nie rzuca wyjątku, wynik prawdopodobnie nie jest tym, czego chciał clwen dostać. –