编程语言Python非常简洁。与JavaScript相比,您不需要大量的括号,分号和var
。在我看来,有一点似乎与这种哲学不一致的是无法连接字符串和数字的事实。以前没有将数字转换为str ()
或其他结构(例如% s% s% (Variale, variable)
)的字符串。这个选择的理论原因是什么?
JavaScript:
console.log("I can c"+0+"ncat"+3+"nate a "+1+"ot of num"+63+"rs!")
Python:
print "I can c%incat%inate a %iot of num%irs!" %(0,3,1,63)
----------------------------------------------------------------------------
i can c0ncat3nate a 1ot of num63rs!
我不知道为什么这个问题已被关闭,但是Ashwini Chaudhary发布了你可以找到答案的链接。 所以不是意见,而是基于理论问题的事实。以下是documentation page:
的摘录在强类型语言中,您根本不被允许这样做 任何与您正在使用的数据类型不兼容的内容 用。例如,在弱类型语言中,您通常可以执行3 + 5 + 7得到结果15,因为可以添加数字;同样, 你经常可以做'你好'+'和'+'再见'并得到结果 “HelloAndGoodBye”,因为字符串支持连接。但在一个 你不能做的强类型语言'你好'+ 5 +'再见',因为 没有定义的方法来相互“添加”字符串和数字。在 编译器或解释器可以执行的弱类型语言 幕后转换使这些类型的操作起作用; 例如,弱类型语言可能会为您提供字符串 “Hello5Goodbye”因为“你好”+ 5 +'再见'。优势 对于一种强类型语言,你可以相信正在发生的事情:如果 你做错了什么,你的程序会产生一个类型错误 告诉你哪里出了问题,而且你不必记住很多东西 奥术类型转换规则或尝试调试你的情况 变量在你不知情的情况下默默地改变了
答案 0 :(得分:4)
因为隐式转换是错误的主要来源
python 2.6及更高版本中更易读的替代方案
print ("I can c{}ncat{}nate a {}ot of num{}rs!".format(0,3,1,63))