因此,Python沒有提供明確的C#或Java風格的StringBuilder類。 請注意,我對Python有點新,所以我不確定我的想法是否合適。python 2.7中的string_builder裝飾器 - 如何做到這一點,我應該?
假設我想要一個裝飾器(如果可能的話),它將迭代器連接在一起。這個特殊的例子可以以不同的方式實現,但我可以考慮其他用例。所以...
@string_builder
def build_insert_statement(table_name, col_names, values, where_clause):
yield 'insert into '
yield table_name
yield ' ('
yield ', '.join(col_names)
yield ') values ('
yield ', '.join(values)
yield ') where '
yield where_clause
yield ';'
同樣,我知道有其他的方法可以做到這一點。但是,這可以做到嗎?裝飾者是否可以始終尊重原始功能的簽名,或者只是有時或根本不遵守?如果這是可能的,那麼這是異端嗎?爲什麼?
它不叫* * StringBuilder,但是你可以使用'cStringIO.StringIO'類,或者在Python 3上使用'io.StringIO'類。而且,在Python上構建天真的字符串實際上相當快。 –
@DietrichEpp'StringIO'爲此目的相當不方便,因爲它的目的是模擬文件,而不是「字符串生成器」。上次我檢查它的速度驚人地慢(比手寫對象包裝一串字符串和'str.join'慢幾倍),當重複獲取該值時。 – delnan
@delnan:你能描述一個「模擬文件」和「字符串生成器」會有什麼不同嗎?你確定你在談論'cStringIO'嗎?而且,由於OP不會超過一次,所以在這種情況下的性能是無關緊要的。 –