为什么 Python 里没有 printf ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
autumn2018
V2EX    程序员

为什么 Python 里没有 printf ?

  •  
  •   autumn2018 2018-12-04 17:53:33 +08:00 7305 次点击
    这是一个创建于 2510 天前的主题,其中的信息可能已经有所发展或是发生改变。
    记得刚开始学编程的时候,挺憎恨 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,按照自己的要求写一个就好了
    Finest
        15
    Finest  
       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     Solana     1159 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 653ms UTC 17:54 PVG 01:54 LAX 10:54 JFK 13:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86