V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
autumn2018
V2EX  ›  程序员

为什么 Python 里没有 printf ?

  •  
  •   autumn2018 · 2018-12-04 17:53:33 +08:00 · 6831 次点击
    这是一个创建于 2186 天前的主题,其中的信息可能已经有所发展或是发生改变。
    记得刚开始学编程的时候,挺憎恨 printf 的,但用久了才发现好用.
    perl 和 ruby 里都有 printf,  lua 里面没有可以理解,但为什么 python 里也没有呢?
    python 里好像有 s=%d %x 风格的字符串写法,然后 print 出来...

    另外一个问题,有知道的朋友还请告知一下:
    刚才我 google 的时候,看到说不建议在 C++里用 printf,要用 cout,我想起来我学 c++也是很久之前的事情了,后来这些年都用 C 语言,靠近 os 底层工作,C++的许多东西都是触类旁通"顿悟"的,唯独这个 cout 的好处没看到,比 printf 好在哪里呢?是不是跟 C++的哲学有关?
    25 条回复    2018-12-05 10:14:10 +08:00
    wwqgtxx
        1
    wwqgtxx  
       2018-12-04 19:17:07 +08:00
    print("%d"%5)这样就行了
    ysc3839
        2
    ysc3839  
       2018-12-04 19:24:40 +08:00 via Android   ❤️ 1
    这个问题属于开发者个人选择的问题了,开发者不加入所以没有。
    Monad
        3
    Monad  
       2018-12-04 19:47:33 +08:00
    关于 std::cout 的好处 你想一下 ssize_t 应该用%???来 printf 输出
    misaka19000
        4
    misaka19000  
       2018-12-04 19:58:12 +08:00   ❤️ 1
    Python 用 format 挺好的
    codechaser
        5
    codechaser  
       2018-12-04 19:59:44 +08:00
    [C++ std::cout vs printf]( https://stackoverflow.com/questions/4781819/printf-vs-stdcout)
    python 里也有字符串格式化`str.format()`吧,这个跟`printf`用法不是差不多吗
    balamiao
        6
    balamiao  
       2018-12-04 20:00:06 +08:00
    为什么 python 里没有 echo,没有 var_dump,没有 snprintf~
    autumn2018
        7
    autumn2018  
    OP
       2018-12-04 20:04:36 +08:00
    @Monad 感谢提醒.我查了一下,c99 里可以用%zd,z 是新引入的 modifier,C++标准里没.
    Monad
        8
    Monad  
       2018-12-04 20:09:50 +08:00
    @autumn2018 #7 嗯 那么 pid_t 呢 然后 off_t 呢 就是为了解决这些麻烦的地方哈=.=
    zjdznl
        9
    zjdznl  
       2018-12-04 20:15:48 +08:00 via Android
    format 函数
    anonymous256
        10
    anonymous256  
       2018-12-04 20:53:49 +08:00 via Android
    python 用过 format 以后,就再也不会想用%s 这种奇怪的东西了。
    crab
        11
    crab  
       2018-12-04 20:57:56 +08:00
    print(f"{}")
    guog
        12
    guog  
       2018-12-04 20:58:23 +08:00 via Android
    Python3 用 f-string 挺好的
    smdbh
        13
    smdbh  
       2018-12-04 22:24:21 +08:00
    python 里有 print,python 里有比没有 printf 更痛苦的事情
    bill361410
        14
    bill361410  
       2018-12-04 22:51:07 +08:00
    其实可以自己写一个 printf,按照自己的要求写一个就好了
    hand515
        15
    hand515  
       2018-12-04 22:54:22 +08:00
    更细化用 string.Template 来做模版处理
    pere
        16
    pere  
       2018-12-05 00:51:21 +08:00
    我看 google 的代码规范,printf 比流更推荐使用啊
    tinkerer
        17
    tinkerer  
       2018-12-05 01:05:24 +08:00
    @guog 是的,这才是解决方案
    Kirscheis
        18
    Kirscheis  
       2018-12-05 01:13:58 +08:00 via Android
    printf 到底哪里好用。。感觉用起来浑身难受啊

    以及 printf 显然比 cout 舒服,所以有人能说说为什么推荐 cout 吗
    cufezhusy
        19
    cufezhusy  
       2018-12-05 03:49:09 +08:00
    看了这么多,只有 @guog 说的靠谱。
    deepreader
        20
    deepreader  
       2018-12-05 04:45:28 +08:00
    f-string 了解一下
    aniven
        21
    aniven  
       2018-12-05 08:21:07 +08:00
    print 就是 printf,而且更强大
    zhiqiang
        22
    zhiqiang  
       2018-12-05 09:07:37 +08:00
    我就喜欢在 C++里用 printf。std::cout 又丑又难用。

    std::cout 号称更安全一点,但只要自己注意点,printf 也没啥,再说现在编译器也能识别出大部分不安全的情况。
    SeaRecluse
        23
    SeaRecluse  
       2018-12-05 09:16:47 +08:00
    刚学 c++的第一堂课,老师就教我们
    include<iostream>
    using namespace std:
    ... ...
    cout << "Hello World" << endl;

    后来就是 Java,C#,python
    所以至今也没用过 printf XD
    www5070504
        24
    www5070504  
       2018-12-05 09:41:15 +08:00
    为什么要有 printf 现有的 print 完全够用啊
    Sasasu
        25
    Sasasu  
       2018-12-05 10:14:10 +08:00   ❤️ 2
    cout 输出一个就要进行一次函数调用, 所以大家都建议用 printf.
    不过建议用 https://github.com/fmtlib/fmt, 马上就要变成 std::fmt 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 22:25 · PVG 06:25 · LAX 14:25 · JFK 17:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.