Python Language
Funkcja drukowania
Szukaj…
Podstawy drukowania
W Pythonie 3 i nowszych print
jest funkcją, a nie słowem kluczowym.
print('hello world!')
# out: hello world!
foo = 1
bar = 'bar'
baz = 3.14
print(foo)
# out: 1
print(bar)
# out: bar
print(baz)
# out: 3.14
Możesz również przekazać szereg parametrów do print
:
print(foo, bar, baz)
# out: 1 bar 3.14
Innym sposobem print
wielu parametrów jest użycie znaku +
print(str(foo) + " " + bar + " " + str(baz))
# out: 1 bar 3.14
Należy jednak zachować ostrożność przy używaniu +
do drukowania wielu parametrów, ponieważ typ parametrów powinien być taki sam. Próba wydrukowania powyższego przykładu bez rzutowania na string
spowoduje najpierw błąd, ponieważ spróbuje on dodać liczbę 1
do "bar"
i dodać ją do liczby 3.14
.
# Wrong:
# type:int str float
print(foo + bar + baz)
# will result in an error
Wynika to z tego, że treść print
zostanie najpierw oceniona:
print(4 + 5)
# out: 9
print("4" + "5")
# out: 45
print([4] + [5])
# out: [4, 5]
W przeciwnym razie użycie znaku +
może być bardzo pomocne dla użytkownika do odczytania wyniku zmiennych W poniższym przykładzie wynik jest bardzo łatwy do odczytania!
Poniższy skrypt to pokazuje
import random
#telling python to include a function to create random numbers
randnum = random.randint(0, 12)
#make a random number between 0 and 12 and assign it to a variable
print("The randomly generated number was - " + str(randnum))
Można zapobiec print
funkcję automatyczne drukowanie nowej linii za pomocą end
parametr:
print("this has no newline at the end of it... ", end="")
print("see?")
# out: this has no newline at the end of it... see?
Jeśli chcesz zapisać do pliku, możesz przekazać go jako file
parametrów:
with open('my_file.txt', 'w+') as my_file:
print("this goes to the file!", file=my_file)
to idzie do pliku!
Parametry drukowania
Możesz zrobić coś więcej niż tylko wydrukować tekst. print
ma również kilka parametrów, które mogą ci pomóc.
sep
argumentów: umieść ciąg między argumentami.
Czy musisz wydrukować listę słów oddzielonych przecinkiem lub innym ciągiem?
>>> print('apples','bannas', 'cherries', sep=', ')
apple, bannas, cherries
>>> print('apple','banna', 'cherries', sep=', ')
apple, banna, cherries
>>>
end
argumentu: użyj na end
czegoś innego niż nowy wiersz
Bez argumentu end
wszystkie funkcje print()
zapisują wiersz, a następnie przechodzą na początek następnego wiersza. Możesz to zmienić, aby nic nie robić (użyj pustego ciągu „”) lub podwójnego odstępu między akapitami, używając dwóch nowych linii.
>>> print("<a", end=''); print(" class='jidn'" if 1 else "", end=''); print("/>")
<a class='jidn'/>
>>> print("paragraph1", end="\n\n"); print("paragraph2")
paragraph1
paragraph2
>>>
file
argumentu: wyślij dane wyjściowe do innego miejsca niż sys.stdout.
Teraz możesz wysłać swój tekst na standardowe wyjście, do pliku lub do StringIO i nie przejmuj się tym, co otrzymasz. Jeśli kwaknie jak plik, działa jak plik.
>>> def sendit(out, *values, sep=' ', end='\n'):
... print(*values, sep=sep, end=end, file=out)
...
>>> sendit(sys.stdout, 'apples', 'bannas', 'cherries', sep='\t')
apples bannas cherries
>>> with open("delete-me.txt", "w+") as f:
... sendit(f, 'apples', 'bannas', 'cherries', sep=' ', end='\n')
...
>>> with open("delete-me.txt", "rt") as f:
... print(f.read())
...
apples bannas cherries
>>>
Istnieje czwarty parametr flush
który wymusi opróżnienie strumienia.