Loading... ## 描述 `print()`方法用于打印输出,是最常见的一个函数。 注意:`print` 在 `Python3.x` 是一个函数,但在 `Python2.x` 版本不是一个函数,只是一个关键字。 ## 语法 ```python print(args) ``` ## 参数 - `objects` : 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。 - `sep` :用来间隔多个对象,默认值是一个空格。 - `end` :用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。 - `file` : 要写入的文件对象。 - flush :输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。 ## 实例 **1. 字符串、布尔型和数值类型可以直接输出** ```python >>> print('Python') Python >>> print(True) True >>> print(False) False >>> print(23) 23 >>> print(-7.2) -7.2 >>> print(1.0e2) 100.0 ``` **2. 输出变量值** 2.1 字符串、布尔型、数值变量 对于字符串变量、布尔型变量和数值变量,`print`函数会直接打印它们的值。 ```python >>> string = 'C++' >>> integer = 6 >>> float_number = -7.1 >>> omp = True >>> print(string) C++ >>> print(integer) 6 >>> print(float_number) -7.1 >>> print(omp) True ``` 2.2 列表变量 对于列表变量,`print`函数会直接将列表全部元素打印出来,并用`[]`包裹全部元素,表示打印的是一个列表。 ```python >>> print(test_list) ['Nova', 'Cinder', 'Neutron', 'Keystone', 23, 45.2] ``` 2.3 元组变量 对于元组变量,`print`函数会直接将元组全部元素打印出来,并用`()`包裹全部元素,表示打印的是一个元组。 ```python >>> test_tuple = ('C9', 'FNC', 'IG', 'G2') >>> print(test_tuple) ('C9', 'FNC', 'IG', 'G2') ``` 2.4 字典变量 对于字典变量,`print`函数会直接将字典全部键值对打印出来,并用`{}`包裹全部键值对。字典中的每一个键值对中用:隔开键和值。 ```python >>> test_dict = {'MacBook Pro':'computer', 'IPhone X':'mobile phone', 'FusionSphere':'HuaweiCloud OS'} >>> print(test_dict) {'MacBook Pro': 'computer', 'IPhone X': 'mobile phone', 'FusionSphere': 'HuaweiCloud OS'} ``` 2.5 集合变量 对于集合变量,`print`函数会直接将集合全部元素不规则的打印出来(没有顺序),并用{}包裹全部元素。 ```python >>> test_set = {2, 4, 6, 3.2} >>> print(test_set) {2, 3.2, 4, 6} ``` ## 3. 格式化输出 `Python`支持参数格式化。 #### 3.1 格式化字符:`%c` ```python >>> print('I love %c' %'S') I love S ``` #### 3.2 格式化字符串:`%s` ```python >>> print('I want to learn %s. How about you?' %'Python') I want to learn Python. How about you? ``` #### 3.3 格式化整数:`%d` ```python >>> print('I like number %d' %23) I like number 23 ``` #### 3.4 格式化无符号整型:`%u` ```python >>> print('10 - 23 is %d, not %u' %(-13, 13) ) 10 - 23 is -13, not 13 ``` #### 3.5 格式化无符号八进制数:`%o` `print`函数将无符号十进制数转换为八进制数。 ```python >>> print('return: %o' %56) return: 70 ``` #### 3.6 格式化无符号十六进制数:`%x` `print`函数将无符号十进制数转换为十六进制数。 ```python >>> print('Return: %x %x' %(123, 257)) Return: 7b 101 ``` #### 3.7 格式化无符号十六进制数(大写):`%X` ```python >>> print('Return: %X %X' %(123, 257)) Return: 7B 101 ``` #### 3.8 格式化浮点数:`%f` ```python >>> print('PI= %f' %(3.1415926)) PI= 3.141593 ``` 还可以指定浮点数的精度。 ```python >>> print('PI= %f, about %.2f' %(3.1415926, 3.1415926)) PI= 3.141593, about 3.14 ``` #### 3.9 用科学计数法格式化浮点数:`%e` ```python >>> print('%e' %(1.0e3)) 1.000000e+03 3.10 格式化浮点数(简写):%g >>> print('%g %g' %(1.0e3, 1.23)) 1000 1.23 ``` #### 4.10 format输出 Python2.6 开始,新增了一种格式化字符串的函数 **str.format()**,它增强了字符串格式化的功能。 基本语法是通过 **{}** 和 **:** 来代替以前的 **%** 。 format 函数可以接受不限个参数,位置可以不按顺序。 ```python >>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序 'hello world' >>> "{0} {1}".format("hello", "world") # 设置指定位置 'hello world' >>> "{1} {0} {1}".format("hello", "world") # 设置指定位置 'world hello world' ``` 也可以设置参数: ```python #!/usr/bin/python # -*- coding: UTF-8 -*- print("网站名:{name}, 地址 {url}".format(name="Fivk博客", url="blog.fivk.cn")) # 通过字典设置参数 site = {"name": "Fivk博客", "url": "blog.fivk.cn"} print("网站名:{name}, 地址 {url}".format(**site)) # 通过列表索引设置参数 my_list = ['Fivk博客', 'blog.fivk.cn'] print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的 ``` 输出结果为: ```python 网站名:Fivk, 地址 blog.fivk.cn 网站名:Fivk, 地址 blog.fivk.cn 网站名:Fivk, 地址 blog.fivk.cn ``` 也可以向 **str.format()** 传入对象: ```python #!/usr/bin/python # -*- coding: UTF-8 -*- class AssignValue(object): def __init__(self, value): self.value = value my_value = AssignValue(6) print('value 为: {0.value}'.format(my_value)) # "0" 是可选的 ``` 输出结果为: ```python value 为: 6 ``` ### 数字格式化 下表展示了 str.format() 格式化数字的多种方法: ```python >>> print("{:.2f}".format(3.1415926)) 3.14 ``` | 数字 | 格式 | 输出 | 描述 | | ------------ | --------- | ----------- | ------------------------------ | | 3.1415926 | {:.2f} | 3.14 | 保留小数点后两位 | | 3.1415926 | {:+.2f} | +3.14 | 带符号保留小数点后两位 | | -1 | {:+.2f} | -1.00 | 带符号保留小数点后两位 | | 2.71828 | {:.0f} | 3 | 不带小数 | | 5 | {:0>2d} | 05 | 数字补零 (填充左边, 宽度为2) | | 5 | {:x<4d} | 5xxx | 数字补x (填充右边, 宽度为4) | | 10 | {:x<4d} | 10xx | 数字补x (填充右边, 宽度为4) | | 1000000 | {:,} | 1,000,000 | 以逗号分隔的数字格式 | | 0.25 | {:.2%} | 25.00% | 百分比格式 | | 1000000000 | {:.2e} | 1.00e+09 | 指数记法 | | 13 | {:>10d} | 13 | 右对齐 (默认, 宽度为10) | | 13 | {:<10d} | 13 | 左对齐 (宽度为10) | | 13 | {:^10d} | 13 | 中间对齐 (宽度为10) | 进制 ```python '{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11) ``` ```python 1011 11 13 b 0xb 0XB ``` **^**, **<**, **>** 分别是居中、左对齐、右对齐,后面带宽度, **:** 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。 **+** 表示在正数前显示 **+**,负数前显示 **-**;(空格)表示在正数前加空格 b、d、o、x 分别是二进制、十进制、八进制、十六进制。 此外我们可以使用大括号 **{}** 来转义大括号,如下实例: ```python #!/usr/bin/python # -*- coding: UTF-8 -*- print ("{} 对应的位置是 {{0}}".format("fivk")) ``` 输出结果为: ```python runoob 对应的位置是 {0} ``` ## 4. 格式化操作符 4.1 定义宽度或小数点精度:`*` ```python >>> amount = 123 >>> print('%*d' %(5,amount)) 123 ``` 不过,使用下面的方式也可以替代`*`,定义宽度: ```python >>> amount = 123 >>> print('%5d' %amount) 123 ``` 4.2 左对齐:`-` ```python >>> print('%5d' %amount) #不采用左对齐输出 123 >>> print('%-5d' %amount) #左对齐输出 123 ``` 4.3 在正数前面显示`+`号:`+` ```python >>> print('%-+5d' %amount) +123 ``` ## 5.自动换行 默认情况下,`print`函数输出后自动换行: ```python >>> for i in range(3): ... print(i) ... 0 1 2 ``` 如果不想让`print`函数执行完换行,可以使用`end`参数: ```python >>> for i in range(3): ... print(i, end='') ... 012>>> ``` ## 6. 指定输出分隔符 默认情况下,`print`输出是有分隔符的: ```python >>> address = 'Huawei - Building a Fully Connected, Intelligent World' >>> print("email: xxx.@", address) email: xxx.@ Huawei - Building a Fully Connected, Intelligent World ``` 要想消去分隔符,可以使用`sep`参数: ```python >>> print("email: xxx.@", address) email: xxx.@ Huawei - Building a Fully Connected, Intelligent World >>> print("email: xxx.@", address, sep='') email: xxx.@Huawei.com ``` `sep`参数还可以指定其他字符作为分隔符: ```python >>> p1 = 'Asian' >>> p2 = 'China' >>> p3 = 'Shannxi' >>> p4 = "Xi'an" >>> p5 = 'Yanta' >>> print(p1, p2, p3, p4, p5, sep='>>> ') Asian>>> China>>> Shannxi>>> Xi'an>>> Yanta ``` ## 注意事项 1. 输出单/双引号字符串 在输出单/双引号字符串时,`print`函数可以做到与交互式解释器一样,正确的打印。 `?`使用两种引号的字符串好处:可以创建本身就包含引号的字符串,而不使用转义符。可以在双引号包裹的字符串中使用单引号,或者在单引号包裹的字符串中使用双引号。 ```python >>> print("I'm a boy.") I'm a boy. ``` 2. 与交互式解释器响应输出的区别 `print`函数的输出与交互式解释器的自动响应输出存在一些差异。`print()`会把包裹字符串的引号截去,仅输出其实际内容,易于阅读。它还会自动地在各个输出部分之间添加空格,并在所有输出的最后添加换行符。 3. 当字符串数据与其他数据类型拼接输出时,会报错 ```python >>> print('number ' + 1) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: must be str, not int ``` 正确的做法是将非字符串转换为字符串输出,或用%格式化输出。 ## 补充 `print()`函数调用底层的`sys.stdout.write()`方法,即往控制台打印字符串。 最后修改:2022 年 03 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏