V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
autumn2018
V2EX  ›  程序员

为什么 Python 里没有 printf ?

  •  
  •   autumn2018 · Dec 4, 2018 · 7708 views
    This topic created in 2711 days ago, the information mentioned may be changed or developed.
    记得刚开始学编程的时候,挺憎恨 printf 的,但用久了才发现好用.
    perl 和 ruby 里都有 printf,  lua 里面没有可以理解,但为什么 python 里也没有呢?
    python 里好像有 s=%d %x 风格的字符串写法,然后 print 出来...

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

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

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

    后来就是 Java,C#,python
    所以至今也没用过 printf XD
    www5070504
        24
    www5070504  
       Dec 5, 2018
    为什么要有 printf 现有的 print 完全够用啊
    Sasasu
        25
    Sasasu  
       Dec 5, 2018   ❤️ 2
    cout 输出一个就要进行一次函数调用, 所以大家都建议用 printf.
    不过建议用 https://github.com/fmtlib/fmt, 马上就要变成 std::fmt 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5173 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 09:50 · PVG 17:50 · LAX 02:50 · JFK 05:50
    ♥ Do have faith in what you're doing.