[python] Spojovani retezcu: (bylo: Rekurzivní generátor v Pythonu 3?)

Petr Viktorin encukou na gmail.com
Neděle Srpen 28 19:33:20 CEST 2016


On 08/28/2016 05:51 PM, Honza Král wrote:
> Honza Král
> E-Mail: honza.kral na gmail.com
> Phone:  +420 606 678585
>
>
> 2016-08-28 17:40 GMT+02:00 Petr Messner <petr.messner na gmail.com>:
>> Díky Honzo za odkaz.
>>
>> Jinak - Python, Ruby, Java, C++, na jazyku nezáleží... Musím vědět, jestli daná operace manipuluje s některým svým operandem, nebo vytváří novou hodnotu. A protože jsou stringy v Pythonu immutable, tak jako programátor bych měl tušit, že se bude kopírovat. A dát si pozor na případy, kdy se bude kopírovat furt dokola.
>>
>> Že to pypy nějak umí optimalizovat je hezké, ale i kdybych ho používal, tak fakt není dobré spoléhat se na to, že mi překladač opraví chybu v samotném návrhu algoritmu.
>
> stale plati, ze mnohem dulezitejsi nez kompilator je programator -
> pouzivam tak to, co dava z hlediska kodu (nikoli kompilatoru nejvetsi
> smysl). Python s tim pocita a je na to zarizeny.
>
> Snazit se o takove optimalizace vetsinou prinasi vice problemu nez
> uzitku. A to i kdyz odhledneme od problemu spojenych s tim, ze python
> ma nekolik implementaci ktere se chovaji jinak.

Zrovna tohle je v dokumentaci [0], takže tady je jasné jak se 
implementace budou (v nejhorším případě) chovat. Když chci algoritmus 
navrhout pořádně, je opravdu dobré na tohle vzít ohled.

Nebo se teda dá spolehnout buď na to, že můj program, resp. programy co 
používají moji knihovnu, pojede jenom na CPythonu nebo PyPy, kde je 
tohle v určitých případech optimalizované, nebo že na to, že budou 
zpracovávat tak málo dat že kvadratická náročnost nebude hrát roli.

[0] 
https://docs.python.org/3/library/stdtypes.html#common-sequence-operations 
- poznámka (6)



Další informace o konferenci Python