Python之路(1)—— Print()函数

Python 3 中的 print 函数会将它的参数转换为字符串,然后用指定的分隔符(默认是空格)连接起来,并在最后添加指定的结束字符(默认是换行符),最后将结果写入标准输出或指定的文件。

例如,print(3, 2, 1) 会将 3、2、1 转换为字符串"3"、"2"、"1",用空格连接后输出"3 2 1",并在末尾添加换行符。

一、Print() 函数

print()函数具有灵活的语法结构,其完整形式如下:

python 复制代码
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 

这个语法包含了多个参数,每个参数都有特定的功能:

  • objects是不定长参数,允许函数接收任意数量的输出对象。这些对象会被自动转换为字符串形式,就像对每个对象调用了str()函数一样。这也解释了为什么print()能够处理多种不同类型的数据
  • sep参数定义了多个对象之间的分隔符,默认为一个空格字符。当print()函数接收多个对象时,它会使用这个分隔符将它们连接起来
  • end参数指定了打印结束后要添加的字符,默认为换行符'\n',这就是为什么每次调用print()后光标会移动到下一行的原因。也可以实现不换行效果:
python 复制代码
print('hello',end='')
print('world')
# 第一行的print函数end值为空输出:helloworld

print('hello',end='  ')
print('world')
# 第一行的print函数end值为两个空格输出:hello  world

print('hello',end='!')
print('world')
# 第一行的print函数end值为感叹号输出值为:hello!world
  • file参数指定了输出的目标文件对象,默认是sys.stdout(标准输出,通常是控制台)。这使得print()能够将输出重定向到文件或其他输出流,例如:
python 复制代码
with open('D:/output.txt','a+') as f:
  print('Hello, Python!', file=f)  # 输出到文件
  • flush参数控制是否强制刷新输出缓冲区,默认为False。在特定情况下,如需要立即看到输出结果而不是等待缓冲区填满,可以将其设置为True

二、Print()函数的输出过程

了解了print()函数的源码构成,我们就能理解python解释器的工作步骤了。当调用print()函数时,Python解释器会执行以下步骤:

  1. 首先,Python将所有传入的对象通过str()函数转换为字符串表示。意思是你无论输入什么类型的对象,print()都会尝试将其转化为文本形式。
  2. 然后,它使用sep参数指定的分隔符(默认是空格)将这些字符串连接起来,形成一个完整的输出字符串。
  3. 接着,它在输出字符串的末尾添加end参数指定的结束字符(默认是换行符'\n')。
  4. 最后,它将完整的输出字符串写入到file参数指定的文件对象中(默认是标准输出sys.stdout)。
  5. 如果flush参数设置为True,Python会立即刷新输出缓冲区,确保内容立即显示,而不是等待缓冲区填满或程序结束

三、可输出内容的类型

1 数值

print()函数可以直接输出整数、浮点数和数学表达式的结果。这些数值不需要使用引号包围。例如:

python 复制代码
print(520)  # 输出整数:520
print(520.1314)  # 输出浮点数:520.1314
print(1+519)  # 这里要注意:当print()接收数学表达式时,它会先计算表达式的值,然后输出结果,而不是输出表达式本身。输出结果:520

2 字符串

print()函数可以输出各种形式的字符串,包括使用单引号双引号三引号包围的文本。例如:

python 复制代码
print('我爱你,Jxbw!')  # 使用单引号
print("I love u,Jxbw!")  # 使用双引号
print('''我爱你,Jxbw!''') # 使用三引号

单引号和双引号的字符串在功能上没有区别,但在某些情况下使用一种可能更方便,例如当字符串本身包含引号时

python 复制代码
print("this's my love, python.")  # 字符串中包含单引号,外部使用双引号更方便

三引号允许创建多行字符串,实现换行输出

python 复制代码
print('''第一行内容
第二行内容
哈哈哈,23333~''')

3 变量

print()函数可以直接输出各种类型的变量,无需特殊处理.对于不同类型的变量,print()会自动调用该变量相应的字符串转换方法,将它们转换为可读的文本形式

python 复制代码
num = 19
print(num)  # 输出数值型变量:19

str_var = 'Duan Yixuan'
print(str_var)  # 输出字符串变量:Duan Yixuan

list_var = [1, 2, 'a']
print(list_var)  # 输出列表变量:[1, 2, 'a']

tuple_var = (1, 2, 'a')
print(tuple_var)  # 输出元组变量:(1, 2, 'a')

dict_var = {'a': 1, 'b': 2}
print(dict_var)  # 输出字典变量:{'a': 1, 'b': 2}

4 特殊字符和转义序列

print()函数支持输出各种转义序列,这些特殊字符可以实现多种格式化效果

python 复制代码
print('第一行\n第二行')  # \n 表示换行
print('姓名\t年龄')  # \t 表示制表符
print('这是引号\'示例\'')  # \' 表示单引号字符
print("这是双引号\"示例\"")  # \" 表示双引号字符
print('这是一个反斜杠\\示例')  # \\ 表示一个反斜杠字符

转义字符总结

特征:反斜杠() + 想要实现的转义功能(转义字符)英文缩写首字母

转义字符 名称/功能 说明
\b 退格 (BS) 将当前位置移到前一列。 (backspace)
\f 换页 (FF) 将当前位置移到下页开头。
\n 换行 (LF) 将当前位置移到下一行开头。 (newline)
\r 回车 (CR) 将当前位置移到本行开头。 (return)
\t 水平制表 (HT) 跳到下一个 TAB 位置。
\v 垂直制表 (VT) 垂直制表。
\ 反斜线 代表一个反斜线字符 "\"(用处看示例第五个)
' 单引号 (撇号) 代表一个单引号字符(用处看示例第三个)
" 双引号 代表一个双引号字符(用处看示例第四个)
? 问号 代表一个问号
\0 空字符 (NUL) 空字符。
\ddd 八进制表示 1-3 位八进制所代表的任意字符
\xhh 十六进制表示 1-2 位十六进制所代表的任意字符

四、高级用法

格式化输出

print()函数支持多种格式化输出方式,使用%表示标记转换说明符的开始

格式字符 说明
%s 字符串采用 str() 的显示
%r 字符串 (repr()) 的显示
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数(基底写 e)
%E 指数(基底写 E)
%f, %F 浮点数
%g 指数 (e) 或浮点数(根据显示长度)
%G 指数 (E) 或浮点数(根据显示长度)
%% 字符 %
示例:
python 复制代码
PI = 3.141592653
print('%10.3f' % PI)  # 字段宽10,精度3,输出:     3.142 
#精度为3,所以只显示142,指定宽度为10,所以在左边需要补充5个空格,以达到10位的宽度

s = 'Duan Yixuan'
x = len(s)
print('The length of %s is %d' % (s, x))  # 输出:The length of Duan Yixuan is 11
# 'The length of %s is %d' 这部分叫做:格式控制符
# (s,x) 这部分叫做:转换说明符

PI = 3.1415926
print('%-10.3f' % PI)  # 左对齐,字段宽10,精度3
print('%+f' % PI)  # 显示正负号:+3.141593
print('%010.3f' % PI)  # 用0填充空白:0000003.142
相关推荐
补三补四9 分钟前
Django与数据库
数据库·python·django
lczdyx24 分钟前
Transformer 代码剖析6 - 位置编码 (pytorch实现)
人工智能·pytorch·python·深度学习·transformer
云天徽上26 分钟前
【目标检测】目标检测中的数据增强终极指南:从原理到实战,用Python解锁模型性能提升密码(附YOLOv5实战代码)
人工智能·python·yolo·目标检测·机器学习·计算机视觉
weixin_307779131 小时前
PySpark实现获取S3上Parquet文件的数据结构,并自动在Amazon Redshift里建表和生成对应的建表和导入数据的SQL
数据仓库·python·spark·云计算·aws
冷琴19961 小时前
基于Python+Vue开发的婚恋交友管理系统-相亲系统-课程作业
vue.js·python·交友
黄小耶@1 小时前
如何快速创建Fastapi项目
linux·python·fastapi
jambinliang1 小时前
工业零件不良率、残次率的智能数据分析和数字化管理
大数据·python·sql·数据分析
weixin_307779132 小时前
PySpark实现获取S3上Parquet文件的数据结构,并自动在Snowflake里建表和生成对应的建表和导入数据的SQL
python·sql·spark·aws
SomeB1oody2 小时前
【Python机器学习】1.1. 机器学习(Machine Learning)介绍
开发语言·人工智能·python·机器学习