zoukankan      html  css  js  c++  java
  • 快斗之翼:python2的print和python3的print()

    python2.x和3.x中的输出语句有着明显不同

    2.x中的print不是个函数,输出格式如下

    1 Python 2.7.12+ (default, Aug  4 2016, 20:04:34) 
    2 [GCC 6.1.1 20160724] on linux2
    3 Type "help", "copyright", "credits" or "license" for more information.
    4 >>> print "There is only %d %s in the sky."%(1,'sun')
    5 There is only 1 sun in the sky.

    3.x中的print成了函数,输出格式如下

    1 Python 3.5.2+ (default, Aug  5 2016, 08:07:14) 
    2 [GCC 6.1.1 20160724] on linux
    3 Type "help", "copyright", "credits" or "license" for more information.
    4 >>> print("There is only %d %s in the sky."%(1,'sun'))
    5 There is only 1 sun in the sky.

    为什么要做出这样的变化,主要原因有以下几点:

    1.print不是函数,不能使用help(),对使用者不方便。

    python2中help(print)会报错。

    1 >>> help(print)
    2   File "<stdin>", line 1
    3     help(print)
    4              ^
    5 SyntaxError: invalid syntax

    python3中,可以使用help(print),清楚的看到print的参数。

     1 Help on built-in function print in module builtins:
     2 
     3 print(...)
     4     print(value, ..., sep=' ', end='
    ', file=sys.stdout, flush=False)
     5     
     6     Prints the values to a stream, or to sys.stdout by default.
     7     Optional keyword arguments:
     8     file:  a file-like object (stream); defaults to the current sys.stdout.
     9     sep:   string inserted between values, default a space.
    10     end:   string appended after the last value, default a newline.
    11     flush: whether to forcibly flush the stream.
    12 (END)

    2.从上面的help(print)中我们也可以看到在print()中的两个重要参数,sep和end。这两个参数使print()相比print多了两个新功能,自定义间隔符(默认空格)和结束符(默认回车)。

    1 >>> print("123","456","789")
    2 123 456 789
    3 >>> print("123","456","789",sep='-')
    4 123-456-789
    1 >>> x=1024
    2 >>> print(t)
    3 256
    4 >>> print(t,end=" end")
    5 256 end>>> 
    6 >>> print(t,end=" end
    ")
    7 256 end

    3.print()重定向输出文件更加方便。

    2.x需要print>>重定向输出,感觉代码很混乱。

    1 >>> out=open("test.txt","w")
    2 >>> print>>out,"123"

    3.x中输出文件成了一个参数,使用更方便。

    1 >>> out=open("test.txt","w")
    2 >>> print("123",file=out)

    4.python2.x中print语句的格式化输出源自于C语言的格式化输出,这种语法对于C这种静态语言比较适用,但是对于拥有很多先进数据结构的python来说就有点力不从心了。python的元组,列表,字典,集合等不适合用这种结构表示,这些数据结构大多元素用下标表示,在这种结构中写出来很混乱。python3.x的print()函数提供了有点类似C#(不知道这么说对不对)中的格式化输出函数format()。另外print()也兼容原来的格式化输出方式。

    1 >>> print("%s is %s."%('Aoko','good'))
    2 Aoko is good.

    format()让输出格式更清晰。

    1 >>> print("{0} is {1}.".format('Aoko','good'))
    2 Aoko is good.

    format()支持数组下标,使python中的一些数据结构输出更加方便。

    1 >>> name=["Kaito",5]
    2 >>> print("{0[0]} has {0[1]} dollars.".format(name))
    3 Kaito has 5 dollars.

    format()下的格式限定符,和原来的差不多。

    1 >>> x=5.6
    2 >>> print("{0:4f}".format(x))
    3 5.600000

    由此看来,print()相比print还是有很大进步的。说句题外话,我希望更多的python用户多花点时间实现代码对新版本的兼容,而不是花时间用在争论“python2和python3谁更好”的口水战上。python作为一种免费语言给我们带来了很多方便,我们不应该吝惜自己那么一点时间。花一点时间让python发展下去,变得更强。

  • 相关阅读:
    IIS部署.net core 的程序后,如何查看控制台的日志?
    Java中string的编码的详细说明
    explicit禁止被用来执行隐式类型转换。仍可以进行显示转换
    判断一个IP字符串为有效的IP方法
    链接原理
    tcp套接字地址
    c/c++中的__attribute__((weak))使用
    关于multiple definition of 错误说明很详细的文章【转载】
    c/c++中结构体中的位域在大小端设备上的内存存储方式----------位域
    TCP之数据缓冲区大小及其限制
  • 原文地址:https://www.cnblogs.com/besharp/p/8336527.html
Copyright © 2011-2022 走看看