Python 打印和输出

作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员

在编程实践中,print 的使用频率非常高,特别是程序运行到某个时刻,要检测产生的结果时,必须用 print 来打印输出。

关于 print 函数,前面很多地方已经提及过,可用于写入标准输出。现在,是时候该深入了。

注意: 这里强调的是“print 函数”,而不是“print 语句”。

深入 print

在 Python 2.x 中,print 是一个语句,但是在 Python 3.x 中,它是一个函数。如果 2.x 和 3.x 都使用过,你就会发现差异有多么大。

进入 3.x 的交互式 shell,尝试使用“print 语句”:

[wang@localhost ~]$ python
Python 3.5.2 (default, Mar 29 2017, 11:05:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> print 'Python'
...
SyntaxError: Missing parentheses in call to 'print'

对于大多数人来说,这个错误信息再熟悉不过了。正如上面所提到的那样,print 是 3.x 中的一个函数,与其他函数一样,参数应该被圆括号括起来:

>>> print('Python')
Python

print 函数

要了解 print 函数的用途,可以使用 help() 来寻求帮助:

>>> help(print)
...
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

将对象输出到文本流文件,由 sep 分开,然后以 end 结束。如果 sep、end、file 和 flush 出现,则必须以关键字参数的形式指定。

不使用关键字参数

print 函数可以打印任意数量的值(value1, value2, …),这些值由逗号分隔。

>>> age = 18
>>> 
>>> print('age', age)
age 18

很容易发现,两个值之间有一个分隔符 - 空格(默认值),这取决于 sep。

分隔符

如果要重新定义分隔符,可以通过 sep 来指定。

>>> print('age', age, sep='')  # 去掉空格
age18
>>> 
>>> print('www', 'python', 'org', sep='.')  # 以 . 分割
www.python.org

结束符

在 print 中,字符串后面会跟一个 \n(换行),前面的示例体现的不是很明显,换一个方式就显示出来了。

>>> for letter in 'Python':
...     print(letter)
... 
P
y
t
h
o
n

每打印一个就换行,再打印下一个,这就是 \n 所起的作用。

要改变这种行为,可以给 end 分配一个任意字符串:

>>> for letter in 'Python':
...     print(letter, end='-')
... 
P-y-t-h-o-n->>> 

输出重定向

默认情况下,print 的输出被发送到标准输出流(sys.stdout)。通过重新定义 file,可以将输出发送到不同的流(例如:文件或 sys.stderr)中。

>>> f = open('data.txt', 'w')
>>> print('I am a Pythonista', file=f)
>>> f.close()

可以看到,在交互式 shell 中,没有得到任何输出,输出被发送到文件 data.txt 中:

[wang@localhost ~]$ cat data.txt 
I am a Pythonista

也可以通过这种方式将输出重定向到标准错误(sys.stderr)通道:

>>> import sys
>>> 
>>> print('age: 18', file=sys.stderr)
age: 18

输出是否缓冲通常由文件决定,但是如果 flush 是 true,则流将被强制刷新。

<think>好的,我现在需要帮用户介绍如何在Python打印输出字符变量。首先,我得回忆一下Python的基本打印方法,然后整理出不同的情况示例。 用户可能刚学Python,所以得从基础开始。首先想到的就是print()函数,这是最常用的输出方式。要解释如何打印字符串,比如直接使用单引号或双引号包裹的内容。比如print('Hello World')。 接下来是打印变量。用户可能需要知道如何将变量字符串结合起来输出。这里需要提到字符串的格式化方法,包括旧式的%格式化、str.format()方法,以及Python3.6之后的f-string。这几种方法各有优劣,但f-string通常更简洁易读,应该重点介绍。 然后要考虑不同类型的变量,比如字符串、数字、列表等,打印时的处理是否不同。例如,直接打印变量名,print()会自动处理成字符串,但如果是拼接的话需要注意类型转换。比如,不能直接用加号连接字符串数字,需要先转换数字为字符串,或者使用格式化方法。 还要想到用户可能遇到的常见问题,比如如何在一条print语句中同时输出文本多个变量,如何换行或者不换行,sepend参数的使用。这些细节能帮助用户更灵活地控制输出格式。 可能需要举几个例子,比如打印姓名年龄,使用不同的格式化方法展示。例如,用%格式化:print("姓名:%s,年龄:%d" % (name, age));用format方法:print("姓名:{},年龄:{}".format(name, age));用f-string:print(f"姓名:{name},年龄:{age}")。这样用户能对比不同方法的语法。 另外,提醒用户注意字符串中的特殊字符,比如引号的处理,转义字符的使用,或者使用不同的引号来避免冲突。例如,print("他说:'你好'"),或者使用三引号处理多行字符串。 还有,提到print()的默认换行行为,如何通过end参数改变,比如print("Hello", end=" ")来在一行内输出多个内容。以及sep参数,用于分隔多个参数,比如print(a, b, sep=", ")。 总结一下,结构应该是先介绍print()的基本用法,然后讲解如何结合变量字符串,接着介绍不同的格式化方法,最后提到一些高级用法常见问题。这样用户能一步步从基础到进阶了解打印输出的各种技巧。</think>在Python中,打印字符变量主要通过`print()`函数实现。以下是逐步说明示例: --- ### 一、基础打印 1. **直接打印字符串** 用单引号`''`或双引号`""`包裹字符: ```python print("Hello World") # 输出: Hello World print('Python输出') # 输出: Python输出 ``` 2. **打印变量** 直接传入变量名: ```python name = "Alice" age = 25 print(name) # 输出: Alice print(age) # 输出: 25 ``` --- ### 二、混合输出字符与变量 #### 方法1:逗号分隔 用逗号`,`自动添加空格分隔: ```python print("姓名:", name, "年龄:", age) # 输出: 姓名: Alice 年龄: 25 ``` #### 方法2:字符串拼接(仅限同类型) 需手动转换数字为字符串: ```python print("年龄: " + str(age)) # 输出: 年龄: 25 ``` #### 方法3:格式化字符串(推荐) - **f-string(Python 3.6+)** 变量直接嵌入`{}`: ```python print(f"姓名: {name}, 年龄: {age}") # 输出: 姓名: Alice, 年龄: 25 ``` - **`format()`方法** 按顺序或命名占位: ```python print("姓名: {}, 年龄: {}".format(name, age)) # 输出: 姓名: Alice, 年龄: 25 print("年龄: {a}, 姓名: {n}".format(n=name, a=age)) ``` - **旧式`%`格式化** 适用于简单场景: ```python print("姓名: %s, 年龄: %d" % (name, age)) # 输出: 姓名: Alice, 年龄: 25 ``` --- ### 三、特殊格式控制 1. **换行与不换行** - 默认换行:`print()`结尾有换行符`\n` - 取消换行: ```python print("Hello", end=" ") print("World") # 输出: Hello World ``` 2. **分隔符`sep`** 自定义多个参数间的分隔符: ```python print("2023", "10", "01", sep="-") # 输出: 2023-10-01 ``` --- ### 四、示例汇总 ```python # 定义变量 x = 5 y = 3.14 text = "结果" # 混合输出 print(f"{text}: x={x}, y={y}") # 输出: 结果: x=5, y=3.14 # 数学表达式 print(f"{x} + {y} = {x + y}") # 输出: 5 + 3.14 = 8.14 # 多行输出 print(""" 第一行 第二行 """) ``` --- ### 五、注意事项 1. 变量类型需兼容(如用`str()`转换非字符串) 2. 引号嵌套时需转义或交替使用单/双引号: ```python print("他说:\"你好\"") # 输出: 他说:"你好" print('这是"引号"示例') # 输出: 这是"引号"示例 ``` 掌握这些方法后,可以灵活处理Python中的各类输出需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一去丶二三里

有收获,再打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值