Питон

от Всичко за 1 лев, свободната енциклопедия

(Разлики между версиите)
Версия от 16:05, 4 май 2020
Куцо Магаре (Беседа | приноси)

← Go to previous diff
Текуща версия
Куцо Магаре (Беседа | приноси)
Не мразя този език за програмиране. Мразя хората, които го ползват. Уви, ползвам го и аз...
Ред 6: Ред 6:
Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете [https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really да си завирате лайната където си поискате]. Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете [https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really да си завирате лайната където си поискате].
-Питон е бавен. Толкова бавен, че се препоръчва for циклите да не се ползват.+Питон е бавен. Толкова бавен, че се препоръчва <code>for</code> циклите да не се ползват.
Тъй като са девствени онанисти-[[фетишизъм|фетишисти]] и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си. Тъй като са девствени онанисти-[[фетишизъм|фетишисти]] и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си.
-В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите <code>IndentationError: unexpected indent</code>. За капак на всичко, с оглед на това че са клозетни гейове, страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги [https://www.python.org/dev/peps/pep-0008/#maximum-line-length 79 символа].+В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите <code>IndentationError: unexpected indent</code>. За капак на всичко, с оглед на това че са клозетни [[Гей|ГЕЙОВЕ]], страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги [https://www.python.org/dev/peps/pep-0008/#maximum-line-length 79 символа].
 + 
 +Опитвате се да манипулирате файлове и пътеки? Искате да използвате разделителя на файловите пътеки? (<code>/</code> ако сте [[Луникс|педал-пингвинждия]] и <code>\\</code> ако сте курва на [[Бил Гейтс|Бил Порталов]]) Дано ви бива да печелите "ези-тура" или случайно попаднете на съответния док, щото <code>os.pathsep</code> и <code>os.path.sep</code> са две различни стойности, като първата е разделителя на вашия PATH environment variable, а второто е това, което ви трябва.
При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон. При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон.
Ред 42: Ред 44:
dim=-1, dim=-1,
) )
- return kl_loss</code>+ return kl_loss
Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит): Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит):
def aggregate_kl_loss(prior_means, posterior_means): def aggregate_kl_loss(prior_means, posterior_means):
vals = zip(list(prior_means.values()), list(posterior_means.values())) vals = zip(list(prior_means.values()), list(posterior_means.values()))
- return torch.cat([latent_kl(p, q).unsqueeze(-1) for p, q in vals], -1).sum(-1)+ return torch.stack([latent_kl(p, q) for p, q in vals]).sum(0)
-И може да се напише и още по-елегантно, но декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите+Горе идиотът - да не говорим за ужасния му формат - създава фалшиво измерение на тензорите и ги събира по него. Ние правим същото, но не сме гейове и затова ползваме функцията, която съществува за тая цел, спестявайки си безсмислените операции; и тъй като не сме гейове, можем да намалим функцията до един ред:
 + def aggregate_kl_loss(prior_means, posterior_means):
 + return torch.stack([latent_kl(p, q) for p, q in zip(prior_means, posterior_means)]).sum(0)
 +Тоя ред обаче е 95 символа дълъг и следователно Гнидо би ме екзекутирал задето си го позволявам. Освен това декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите
 + 
[[Категория:Програмни езици]] [[Категория:Програмни езици]]

Текуща версия

Питон е алтернативно название за "хуй" и популярен език за програмиране. Казва се така, защото се ползва от хомосексуалисти, които "обичат питон", или с други думи "обичат [да лапат] хуй". Порно-произходът на езика бива разконспириран и от наличието на "not safe for work" (NSFW, кодово име за порно) пакети в официалните пакетни репозитории: https://pypi.org/project/nsfw/

За езика

Питон е любим език за програмиране на тези, които разработват изкуствен интелект, т.е. пак хомосексуалисти. Това се дължи на наличието на библиотеки, които се импортират в кода ви. Важни такива за големите глави са Нъмпи-дъмпти, питорч, тензортеч, кафе, панди и Юпитер.

Тъй като езикът е динамичен, нито вие знаете какви са променливите ви, нито самият език. Освен това всичко е видимо отвсякъде, което означава, че можете да си завирате лайната където си поискате (https://semitwist.com/articles/article/view/why-i-hate-python-or-any-dynamic-language-really).

Питон е бавен. Толкова бавен, че се препоръчва for циклите да не се ползват.

Тъй като са девствени онанисти-фетишисти и мислят само за гениталиите си, питонджиите извършват демоничните ритуали на т.нар. "duck typing" - отъждествявайки всичко с патката си.

В питон няма скоби и редовете се индентират с точно определен брой интервали. Ако сложите един повече или по-малко ще получите IndentationError: unexpected indent. За капак на всичко, с оглед на това че са клозетни ГЕЙОВЕ, страдащи от агорафобия, питонджиите имат страх от дълги редове и официалният наръчник за стил на езика изисква редове дълги 79 символа (https://www.python.org/dev/peps/pep-0008/#maximum-line-length).

Опитвате се да манипулирате файлове и пътеки? Искате да използвате разделителя на файловите пътеки? (/ ако сте педал-пингвинждия и \\ ако сте курва на Бил Порталов) Дано ви бива да печелите "ези-тура" или случайно попаднете на съответния док, щото os.pathsep и os.path.sep са две различни стойности, като първата е разделителя на вашия PATH environment variable, а второто е това, което ви трябва.

При инсталация питон насира environment variables-а до такава степен, че в наши дни питон не се инсталира директно. Първо се инсталира анаконда, създава се виртуален environment, и след това се инсталира питон.

Внимание! Да не се бърка питон 2 с питон 3. Двете са несъвместими, и половината работи, които ви трябват, не работят на версията, която ползвате.

За автора

Пророкът на питон е Гнидо ван Росум, дебел фагот и холандец. Думата му е закон. В последните години този бог на cringe-а води кръсноносни походи срещу не-инклузивни термини като "master" и "slave" (https://www.theregister.co.uk/2018/09/11/python_purges_master_and_slave_in_political_pogrom/) и отказва да обучава бели мъже заради "diversity" (https://qz.com/1624252/pythons-creator-thinks-it-has-a-diversity-problem/), намалявайки сексизма в индустрията (несъществуващ) като проявява сексизъм.

С оглед на това не е изненадващо че обичащите да лапат питон програмисти проявяват качества подобни на качествата на пророка.


Примери от индустрията

С един колега инсталирахме tensorflow два часа вчера!
   -- истински цитат от анонимен програмист в САП Лабс (инсталацията на tensorflow не отнема повече от 10 минути)


Пример за функция, написана на питон от професионален компютърен учен (https://github.com/jhaux/VUNet/blob/ac788052b74996ecdf779c8b5a09c4126086e6b3/VUNet/utils/loss_utils.py#L65):

def aggregate_kl_loss(prior_means, posterior_means):
    kl_loss = torch.sum(
        torch.cat(
            [
                latent_kl(p, q).unsqueeze(dim=-1)
                for p, q in zip(
                    list(prior_means.values()), list(posterior_means.values())
                )
            ],
            dim=-1,
        ),
        dim=-1,
    )
    return kl_loss

Същата функция, пренаписана от мен (но поне аз не съм шибан троглодит):

def aggregate_kl_loss(prior_means, posterior_means):
    vals = zip(list(prior_means.values()), list(posterior_means.values()))
    return torch.stack([latent_kl(p, q) for p, q in vals]).sum(0)

Горе идиотът - да не говорим за ужасния му формат - създава фалшиво измерение на тензорите и ги събира по него. Ние правим същото, но не сме гейове и затова ползваме функцията, която съществува за тая цел, спестявайки си безсмислените операции; и тъй като не сме гейове, можем да намалим функцията до един ред:

def aggregate_kl_loss(prior_means, posterior_means):
    return torch.stack([latent_kl(p, q) for p, q in zip(prior_means, posterior_means)]).sum(0)

Тоя ред обаче е 95 символа дълъг и следователно Гнидо би ме екзекутирал задето си го позволявам. Освен това декриптирането на кода на тоя боклук е толкова весело колкото да ти забиват трески под ноктите

Лични инструменти