Python Language
Функция печати
Поиск…
Основы печати
В Python 3 и выше print
- это функция, а не ключевое слово.
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
Вы также можете передать несколько параметров для print
:
print(foo, bar, baz)
# out: 1 bar 3.14
Другой способ print
нескольких параметров - использовать +
print(str(foo) + " " + bar + " " + str(baz))
# out: 1 bar 3.14
Однако вы должны быть осторожны при использовании +
для печати нескольких параметров, так как тип параметров должен быть одинаковым. Попытка напечатать приведенный выше пример без приведения в string
сначала приведет к ошибке, потому что она попытается добавить номер 1
в строку "bar"
и добавить это к числу 3.14
.
# Wrong:
# type:int str float
print(foo + bar + baz)
# will result in an error
Это связано с тем, что сначала будет оцениваться содержимое print
:
print(4 + 5)
# out: 9
print("4" + "5")
# out: 45
print([4] + [5])
# out: [4, 5]
В противном случае использование +
может быть очень полезно для пользователя для чтения вывода переменных. В приведенном ниже примере вывод очень прост для чтения!
В приведенном ниже сценарии это
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))
Вы можете запретить автоматическую print
функции печати с помощью параметра end
:
print("this has no newline at the end of it... ", end="")
print("see?")
# out: this has no newline at the end of it... see?
Если вы хотите записать файл, вы можете передать его как file
параметров:
with open('my_file.txt', 'w+') as my_file:
print("this goes to the file!", file=my_file)
это идет к файлу!
Параметры печати
Вы можете делать больше, чем просто печатать текст. print
также есть несколько параметров, которые помогут вам.
Аргумент sep
: поместите строку между аргументами.
Вам нужно распечатать список слов, разделенных запятой или какой-либо другой строкой?
>>> print('apples','bannas', 'cherries', sep=', ')
apple, bannas, cherries
>>> print('apple','banna', 'cherries', sep=', ')
apple, banna, cherries
>>>
Аргумент end
: используйте что-то другое, кроме новой строки в конце
Без аргумента end
все функции print()
записывают строку, а затем переходят к началу следующей строки. Вы можете изменить его, чтобы ничего не делать (используйте пустую строку '') или двойной интервал между абзацами, используя две новые строки.
>>> print("<a", end=''); print(" class='jidn'" if 1 else "", end=''); print("/>")
<a class='jidn'/>
>>> print("paragraph1", end="\n\n"); print("paragraph2")
paragraph1
paragraph2
>>>
file
аргумента: отправьте вывод в другое место, кроме sys.stdout.
Теперь вы можете отправить свой текст в stdout, файл или StringIO и не заботятся о том, что вам дано. Если он кланяется как файл, он работает как файл.
>>> 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
>>>
Существует четвертый параметр flush
который будет принудительно очищать поток.