2013-03-12 100 views
2

当整数转换为字符串我知道,在Python中,你不能简单地这样做:如何避免连接

number = 1 
print "hello number " + number 

你必须这样做:

print "hello number " + str(number) 

否则你”会发生错误。

我的问题是那么,被蟒蛇这样一个简洁的语言,和/自动注入的这项功能从整数转换为在其他许多语言的字符串,是不存在的地方,避免不必使用str()功能每次?一些模糊的导入,或者只是另一种方式来做到这一点?

编辑︰当我说另一种方式,我的意思是更简单,更紧凑的方式来写它。所以,我不会真的考虑format和替代方案。

谢谢。

+0

不是重复..我知道如何连接字符串。我问是否有办法不必这样做。 – nunos 2013-03-12 15:59:21

回答

2

我倾向于使用更紧凑的格式

>>> print "one",1,"two",2 
one 1 two 2 

或者,在Python 3,

>>> print("one",1,"two",2) 
one 1 two 2 

通知然而,这两个选项将永远介绍每个参数之间的空间,这使得它不适合对于更复杂的输出格式,您应该使用其他一些解决方案。

4

你能避免str()

print 'hello number {}'.format(number) 

反正

'abc' + 123 

相当于

'abc'.__add__(123) 

和琴弦的__add__方法只接受字符串。

就像

123 + 'abc' 

相当于

(123).__add__('abc') 

和整数的__add__方法仅接受号(INT /浮动)。

+3

虽然这是更复杂的案件的正确方法,不会'打印“你好号码,号码'在这里工作同样好? – DSM 2013-03-12 15:21:59

+0

@DSM - 是的,它会的。 – eumiro 2013-03-12 15:22:39

+0

@DSM这是我正在寻找的答案兴奋。考虑把它写成答案,以便我可以接受它。谢谢。 – nunos 2013-03-12 16:04:11

4

您可以使用字符串格式化,old

print "hello number %s" % number 

new

​​
+1

请注意,这将调用引擎盖下的str(至少我认为)...与其他格式字符串相同。就像“%d”会调用int,%f将调用float – 2013-03-12 15:25:19

1

由于this答案解释,这不会在Python发生,因为它是强类型。这意味着Python不会转换您没有明确说出要转换的类型。