2.8 KiB
2.8 KiB
无换行符的 Python 打印
原文:https://www.askpython.com/python/examples/python-print-without-newline
有不同的方法可以让我们不用换行就能打印到控制台。让我们快速浏览一下这些方法。
1.使用打印()
我们可以使用print()函数来实现这一点,方法是适当地设置end(结束字符)关键字参数。
默认情况下,这是一个换行符(\n)。因此,我们必须改变这一点,以避免在结尾打印一个换行符。
这个选择有很多选项。我们可以使用空格来打印空格分隔的字符串。
a = "Hello"
b = "from AskPython"
print(a, end=' ')
print(b)
这将打印字符串a和b,用一个空格分隔,而不是换行符。
输出
Hello from AskPython
我们也可以用一个空字符串连续打印它们,没有任何间隙。
a = "Hello"
b = "from AskPython"
print(a, end='')
print(b)
输出
Hellofrom AskPython
2.打印不带换行符的列表元素
有时,当遍历一个列表时,我们可能需要在同一行打印它的所有元素。为此,我们可以再次使用与之前相同的逻辑,使用end关键字参数。
a = ["Hello", "how", "are", "you?"]
for i in a:
print(i, end=" ")
输出
Hello how are you?
3.使用 sys 模块
我们也可以使用sys 模块进行无换行符打印。
更具体地说,sys.stdout.write()函数使我们能够在不换行的情况下写入控制台。
import sys
sys.stdout.write("Hello from AskPython.")
sys.stdout.write("This is printed on the same line too!")
输出
Hello from AskPython.This is printed on the same line too!
4.创建我们自己的 C 风格 printf()函数
我们也可以在 Python 中创建我们的自定义printf()函数!是的,使用模块functools这是可能的,它允许我们通过functools.partial()从现有的函数中定义新的函数!
让我们对print()上的end关键字参数使用相同的逻辑,并用它来创建我们的printf()函数!
import functools
# Create our printf function using
# print() invoked using the end=""
# keyword argument
printf = functools.partial(print, end="")
# Notice the semicolon too! This is very familiar for a
# lot of you!
printf("Hello!");
printf("This is also on the same line!");
输出
Hello!This is also on the same line!
我们还可以将分号与此结合起来(Python 编译器不会抱怨),使我们的 C printf()函数恢复原样!
参考
- JournalDev 关于不换行打印的文章
- StackOverflow 同一话题的问题