Основы печати
В 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
, который будет принудительно очистить поток.