簡體   English   中英

連接運算符+或,

[英]Concatenation Operator + or ,

var1 = 'abc'
var2 = 'xyz'

print('literal' + var1 + var2) # literalabcxyz
print('literal', var1, var2) # literal abc xyz

...除了自動空格','兩者之間有什么區別? 哪個正常使用,哪個也是最快?

謝謝

(你使用的是Python 3.x,其中print是一個函數 - 2.x,print是一個聲明。提到主要的Python版本2.x或3.x是個好主意 - 特別是在尋求幫助時,因為目前大多數人合理地假設2.x,除非說明。)

第一個, print('literal' + var1 + var2) ,計算表達式並將單個參數傳遞給print。 第二個, print('literal', var1, var2) ,只傳遞三個參數進行打印。 這幾乎是偶然的輸出:這就是打印的工作原理。 第二個沒有進行任何連接,只是輸出由空格分隔的每個值(這是打印的默認行為)。

顯而易見:表達式中的加號連接,但逗號進行連接。


時間:我得到了以下結果; 但是,我認為這是有偏見的,因為琴弦很短(例如,較長的琴弦可能會扭轉結果),而且無論如何,在問題中出現的印刷不會花費很長時間(你會得到更好的表現,擔心其他許多事情而已)。

注意:使用python -m timeit --help獲取有關如何使用timeit的說明。

$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, a, b'
100000 loops, best of 3: 7.68 usec per loop
$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, a + " " + b'
100000 loops, best of 3: 4.67 usec per loop
$ python -m timeit -s 'from cStringIO import StringIO; out = StringIO(); a = "abc"; b = "def"' 'print >>out, " ".join([a, b])'
100000 loops, best of 3: 5.37 usec per loop

特別是,請注意每個代碼將給出完全相同的輸出(如果一個方法給出錯誤的結果 ,則比較沒有意義)。 在這些測試中,StringIO是一種打印到屏幕的簡單方法,但它也可能影響結果。

將字符串作為參數傳遞給print將它們與'sep'關鍵字連接起來。 默認為''(空格)。

Separator關鍵字僅限Python 3.x. 在此之前,分隔符始終是一個空格,除了2.5(?)和更高的位置,你可以from __future__ import print_function或類似的東西。

>>> print('one', 'two') # default ' '
one two
>>> print('one', 'two', sep=' and a ')
one and a two
>>> ' '.join(['one', 'two'])
one two
>>> print('one' + 'two')
onetwo

使用逗號為print函數提供了多個參數(在這種情況下,它們全部打印,由空格分隔。使用plus將創建一個打印參數,完整打印。我認為在這種情況下使用+是最好的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM