Należy zauważyć, że oświadczenie Tim jest całkowicie poprawny: nie jest tylko jeden oczywisty sposób to zrobić: print()
. Pozostałe dwie wymienione możliwości mają inne cele.
Jeśli chcemy podsumować cele trzech alternatyw:
print
jest funkcja wysokiego poziomu, które pozwalają, aby napisać coś na standardowe wyjście (lub inny plik). Zapewnia prosty i czytelny interfejs API, z pewnymi fantazyjnymi opcjami dotyczącymi rozdzielania pojedynczych elementów, dodawania terminatora itp. To właśnie chcesz robić przez większość czasu.
sys.stdout.write
to tylko metoda obiektów plików. Tak więc prawdziwym punktem sys.stdout
jest to, że możesz go przekazać tak, jakby był jakimkolwiek innym plikiem. Jest to przydatne, gdy mamy do czynienia z funkcją, która oczekuje pliku i chcemy, aby był on drukowany bezpośrednio na stdout.
Innymi słowy nie powinieneś w ogóle używać sys.stdout.write
. Po prostu przekazujesz około sys.stdout
kodu, który oczekuje pliku.
Uwaga: w python2 zdarzały się sytuacje, w których przy użyciu print
oświadczenie wytwarzanego kodu gorszego niż nazywając sys.stdout.write
. Jednak funkcja print
pozwala zdefiniować separator i terminator, a tym samym omija niemal wszystkie te narożne przypadki.
os.write
jest niskiego poziomu wywołanie do zapisu do pliku. Musisz ręcznie zakodować zawartość, a także musisz jawnie przekazać deskryptor pliku. Jest przeznaczony do obsługi tylko kodu niskiego poziomu, który z jakiegoś powodu nie może zostać zaimplementowany nad interfejsami wyższego poziomu. Prawie nigdy nie chcesz wywoływać tego bezpośrednio, ponieważ nie jest to wymagane i ma gorsze API niż reszta.
Pamiętaj, że jeśli masz kod, który należy zanotować rzeczy na pliku, to lepiej zrobić:
my_file.write(a)
# ...
my_file.write(b)
# ...
my_file.write(c)
niż:
print(a, file=my_file)
# ...
print(b, file=my_file)
# ...
print(c, file=my_file)
Bo to jest bardziej suchy. Używając print
musisz za każdym razem powtarzać file=
. To jest w porządku, jeśli musisz pisać tylko w jednym miejscu , ale jeśli masz 5/6 różnych zapisów, to łatwiej jest po prostu wywołać metodę write
bezpośrednio.
Czy chcesz go użyć do logowania? Następnie sugerowałbym moduł logowania: https://docs.python.org/3/library/logging.html – RvdK
Myślę, że 'print' to jedyny oczywisty sposób (powiedzmy, że nie znasz Pythona i pochodzisz z perla , co możesz spróbować?). Można to również powiedzieć o magicznych metodach. –
@NoctisSkytower jest poprawne, powinieneś również wpisać "wydrukuj" jakiś tekst "". Zwróć uwagę na brakujące nawiasy. – RvdK