为什么在Python中我不能像在JavaScript中那样连接字符串和数字?

时间:2014-01-04 10:49:41

标签: javascript python

编程语言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建议的答案

我不知道为什么这个问题已被关闭,但是Ashwini Chaudhary发布了你可以找到答案的链接。 所以不是意见,而是基于理论问题的事实。以下是documentation page

的摘录
  

在强类型语言中,您根本不被允许这样做   任何与您正在使用的数据类型不兼容的内容   用。例如,在弱类型语言中,您通常可以执行3 +   5 + 7得到结果15,因为可以添加数字;同样,   你经常可以做'你好'+'和'+'再见'并得到结果   “HelloAndGoodBye”,因为字符串支持连接。但在一个   你不能做的强类型语言'你好'+ 5 +'再见',因为   没有定义的方法来相互“添加”字符串和数字。在   编译器或解释器可以执行的弱类型语言   幕后转换使这些类型的操作起作用;   例如,弱类型语言可能会为您提供字符串   “Hello5Goodbye”因为“你好”+ 5 +'再见'。优势   对于一种强类型语言,你可以相信正在发生的事情:如果   你做错了什么,你的程序会产生一个类型错误   告诉你哪里出了问题,而且你不必记住很多东西   奥术类型转换规则或尝试调试你的情况   变量在你不知情的情况下默默地改变了

1 个答案:

答案 0 :(得分:4)

因为隐式转换是错误的主要来源

python 2.6及更高版本中更易读的替代方案

 print ("I can c{}ncat{}nate a {}ot of num{}rs!".format(0,3,1,63))