Python新手入门教程(一):Print()函数详解

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

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

一、Print() 函数

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

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 

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

  • objects是不定长参数,允许函数接收任意数量的输出对象。这些对象会被自动转换为字符串形式,就像对每个对象调用了str()函数一样。这也解释了为什么print()能够处理多种不同类型的数据
  • sep参数定义了多个对象之间的分隔符,默认为一个空格字符。当print()函数接收多个对象时,它会使用这个分隔符将它们连接起来
  • end参数指定了打印结束后要添加的字符,默认为换行符’\n’,这就是为什么每次调用print()后光标会移动到下一行的原因。也可以实现不换行效果:
  • 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()能够将输出重定向到文件或其他输出流,例如:
  • 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()函数可以直接输出整数、浮点数和数学表达式的结果。这些数值不需要使用引号包围。例如:

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

    2 字符串

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

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

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

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

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

    print('''第一行内容
    第二行内容
    哈哈哈,23333~''')
    

    3 变量

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

    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()函数支持输出各种转义序列,这些特殊字符可以实现多种格式化效果

    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) 或浮点数(根据显示长度)
    %% 字符 %

    示例:

    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
    

    作者:香菜别来我碗里

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python新手入门教程(一):Print()函数详解

    发表回复