Python 3.8

15.10.2019 | 10:44 | Miroslav Bendík | Nová verzia

Bola vydaná verzia 3.8 programovacieho jazyka Python. Do noviniek sa dostal aj kontroverzný walrus (:=) operátor. Podrobný zoznam noviniek je zverejnený v dokumentácii. Skrátený prehľad noviniek prináša server realpython.com.

Zdroj: python 3.8

    • RE: Python 3.8 15.10.2019 | 12:47
      Avatar vxmery Mint 21.3 Cinnamon  Používateľ

      Tak to je prvý kontroverzný operátor, doteraz som počul o kontroverzných podnikateľoch, umelcoch, politikoch atp. :)

      • RE: Python 3.8 15.10.2019 | 13:18
        Avatar Miroslav Bendík Gentoo  Administrátor

        No tie diskusie tam boli dlhé a súhlasím s argumentmi, že je proti zen of python (konkrétne bod: There should be one-- and preferably only one --obvious way to do it.). Osobne by som radšej videl implementovaný PEP 505.

        • RE: Python 3.8 15.10.2019 | 19:34
          Avatar bedňa LegacyIce-antiX  Administrátor

          Keby to bol jeden a to podotýkam jeden problém Pythonu, tak by som chápal tie nadávky Pythoňákov na PHP. Na PHP som už dlho nešáhol, ale ten bordel v Pythone by neupratal ani zhŕňač z dvoma radlicami, nehovoriac o enviromente, kde je taký élent, že to sa len tak nevidí. Keď som do toho pred vyše pol rokom išiel naplno, tak som sa tešil, že teraz nájdem královstvo nebeské a ejha, nechápem, fakt nechápem ako keď niekto vidí trochu do Pythonu, si dovolí kritizovať aj Basic.

          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
          • RE: Python 3.8 15.10.2019 | 20:33
            Avatar samalama.   Návštevník

            pocuj a co akoze ty chces robit s tou AI, ked nedokazes pochopit ani python...?

            • RE: Python 3.8 15.10.2019 | 23:00
              Avatar bedňa LegacyIce-antiX  Administrátor

              Ja som niekde písal, že niečo nechápem? Píšem v ňom dnes každý deň/obdeň. Len nechápem niekoho kto do toho určite vidí viac ako ja sa dokáže vysmievať inému programovaciemu jazyku, keď sa topí v tých istých sračkách a aj väčších.

              Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
          • RE: Python 3.8 16.10.2019 | 05:49
            Avatar Miroslav Bendík Gentoo  Administrátor

            No PHP sa dá celkom ľahko vysmievať. Stačí si pozeieť array_* funkcie. Doteraz netuším čo robí array_merge keď sa mu podhodí jedno pole s textovými kľúčmi, druhé s číselnými, alebo nebodaj nejak premiešané. Vlastne ani neviem ako je momentálne array implementované lebo nejak inak tuším riešia textové a číselné kľúče a navonok sa to správa úplne inak.

            • RE: Python 3.8 16.10.2019 | 11:49
              Avatar bedňa LegacyIce-antiX  Administrátor

              V dokumentácií je to celkom slušne popísané. Číselné kľúče sa v tom prípade prečíslujú od nuly. Ak nechceš prečíslovanie použi operátor +.

              Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
              • RE: Python 3.8 16.10.2019 | 13:25
                Avatar Miroslav Bendík Gentoo  Administrátor

                Takže array_merge prečísluje indexy ak sú číselné. +/-

                php > $a = [0, 1];
                php > $b = Array(0 => 2, 1 => 3);
                php > print_r(array_merge($a, $b));
                Array
                (
                    [0] => 0
                    [1] => 1
                    [2] => 2
                    [3] => 3
                )
                

                Tak to skúsme s nečíselnými:

                $a = Array(0 => 0, 1 => 1);
                $b = Array("0" => 2, "1 " => 3);
                Array
                (
                    [0] => 0
                    [1] => 1
                    [2] => 2
                    [1 ] => 3
                )

                Takže prečísluje stringy, ktoré vyzerajú ako čísla. Čiže ak si užívateľ zvolí ako username reťazec 1234 tak na neho nemôžem použiť array_merge. Poďme ďalej.

                $a = Array(0 => 0, 1 => 1);
                $b = Array(0 => 2, 0.5 => 3);
                print_r(array_merge($a, $b));
                Array
                (
                    [0] => 0
                    [1] => 1
                    [2] => 3
                )

                Hmm nazývať operátor + unionom ehm.

                $a = ["i", "j"];
                $b = ["k", "l"];
                print_r($a + $b);
                Array
                (
                    [0] => i
                    [1] => j
                )

                Teraz netvrdím, že tie veci nie sú zdokumentované. Lenže keď mám kód, ktorý pri a + b vymaže koreňový adresár ak sú operandy a=3 a b=4 a je to krásne zdokumentované tak je mi to úplne nanič pretože je to nelogické.

                Ja aktívne pracujem s 10+ programovacími jazykmi, podľa množstva napísaného kódu v poslednom mesiaci by som to odhadom zoradil takto:

                • Dart
                • Python
                • Javascript
                • Assembler (ARM, unified)
                • C++
                • C
                • PHP
                • Lisp / scheme
                • Bash
                • Rust

                Za najmenej mätúce považujem:

                • Python
                • Assembler
                • C
                • RE: Python 3.8 16.10.2019 | 15:02
                  Avatar bedňa LegacyIce-antiX  Administrátor

                  Takže robíš v desiatich a žiadny neovládaš poriadne.

                  Nie, nie toto bol žart, fakt si ťa vážim ako borca a viem že máš pravdu.

                  Keď vydali PHP7+ tak prestalo fungovať kopec skriptov, ja som nemusel prepísať ani riadok, pretože sa vždy držím odporúčaných praktík. Škoda že nevyšla šestka, ktorá mala odstrániť väčšinu bordelu z PHP. Bohužiaľ by nefungovala polovica webu a komunita kokotov sa rozhodla, že spravia nejaký kompromis. PHP naozaj zvádza k tomu ako robiť veci zle.

                  Python vie tiež nasrať a hlavne borci, čo ešte stále píšu v dvojke z nejakých mentálnych dôvodov a toto nechápem vôbec. Do trojky sú už prepísané všetky knižnice čo poznám.

                  Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                  • RE: Python 3.8 16.10.2019 | 15:29
                    Avatar Miroslav Bendík Gentoo  Administrátor

                    Tu nejde o to, že zvádza robiť veci zle. Tu ide o to, že funkcia array_merge funguje nespoľahlivo pre užívateľom zadané hodnoty lebo keď zadá username "1234" tak ho vyhodnotí nesprávne (teda podľa dokumentácie, ale v 99% prípadov nie tak ako zamýšľal programátor). Ak teda chcem implementovať spojenie dictionary musím si to urobiť sám vo vlastnej funkcii pretože tá defaultná sa dá osrať ak užívateľ môže nastavovať vlastné kľúče. Teda používanie vstavaných funkicií je ekvivalentné robeniu vecí zle a som si istý, že nechcem používať programovací jazyk, v ktorom si musím reimplementovať sám vstavané funkcie tak, aby fungovali spoľahlivo.

                    • RE: Python 3.8 16.10.2019 | 16:09
                      Avatar bedňa LegacyIce-antiX  Administrátor

                      Ja osobne som mal vždy pri vývoji zapnuté upozornenia a neviem, či zrovna array_merge hádže nejaké upozornenia pri automatickej konverzií, ale ja som vždy programoval tak, aby neliezli ani tie upozornenia, páč sa to podobne môže občas posrať.

                      V Pythone NumPy, Tensorflow atď si nerobia hlavu ani z warningow. Si to vyskúšaj koľko sračiek z toho leze a čo sa popritom skurví netuším. Dokonca keď sa snažím vypnúť čo najviac warningov, aj tak musím pridať do printu kopec nejakých znakov "---------------------" aby som v tých sračkách výstup vôbec niečo videl.

                      Jako Python enviroment je podľa mňa tiež poriadne zhnitý, ak toto nikto nerieši. Nie že nerieši, mi to príde ako Python standard, proste zo všetkého lezú sračky v podobe stoviek riadkov warningov.

                      Je fakt celkovo málo programátorov, že keď si po ních niečo skompiloješ, tak to nevyprodukeje ani jeden warning. Je pritom jedno o aký programovací jazyk ide.

                      Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                      • RE: Python 3.8 16.10.2019 | 16:19
                        Avatar Miroslav Bendík Gentoo  Administrátor

                        Pri numpy som nikdy nevidel žiadne varovanie okrem delenia nulou (moja chyba). Aké varovania generuje?

                        • RE: Python 3.8 16.10.2019 | 16:48
                          Avatar bedňa LegacyIce-antiX  Administrátor

                          Heh tak som ako vo sne.

                          Zrovna som spustil skript kde liezli z numpy desiatky riadky warningov a nič. Mno OK update to opravil.

                          Fakt sranda to som mal len demostračný skript, ako sa neurónová sieť učí.

                          Toto už ne je ani náhoda, tie warningy z toho liezli mesiace a keď na to chcem nadávať, tak zmiznú. Rovnako to samozrejme prestali produkovať aj ostatné skripty s NumPy.

                          Kurwa a čo som sa nahľadal ako tie výstupy stlmiť aby som vôbec videl výstupy z printov. Ty v tom ideš s nimi, ja si takúto náhodu ani neviem vysvetliť :-)

                          Inak používam antiX Linux rolling release, takže sa to updatuje stále, aby som mal najnovší softvér.

                          Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
                    • RE: Python 3.8 16.10.2019 | 16:14
                      Avatar debian+   Návštevník

                      C ma nebezpecnejsie operacie - praca so smernikmi a predsa sa pouziva.

                      Na co ti je to prakticky ukladat heslo ako 'key'?

                      Co tak to opravit. Mozno nevidis backend. Clovek navrhne jednoducho, ale kym ma osetrit vsetky stavy, tak staci mu ako treba. Ak sa nekomu nepaci, nech si upravy, pikoskuje sam k dokonalosti.

    • RE: Python 3.8 15.10.2019 | 20:56
      Avatar debian+   Návštevník

      Co znamena vlastne to priradenie (pre najme procedurara/strukturara programatora)?

      V go je:

      string text="Ahoj";
      text := "Ahoj";

      V a v tom novom pythone. Kukal som, ale mudry som nebol. Mam rad silne C syntax. Z trocha exotik maximalne este Haskell - resp. jednoduche lambda zapisy.

      • RE: Python 3.8 16.10.2019 | 05:53
        Avatar Miroslav Bendík Gentoo  Administrátor

        To nové priradenie je prakticky to isté, čo staré, akurát sa dá použiť v podmienkach. Teoreticky by nebol problém povoliť staré priradenie v podmienkach, ale je dosť častou programátorskou chybou keď človek napíše = namiesto == a potom pozerá prečo mu kód nefunguje. Inak v podmienke sa to dá použiť takto:

        while (char := getchar()) != None:
            print(char)
        

        ako ekvivalent

        while True:
            char = getchar()
            if char is None:
                break
            print(char)
        
    • RE: Python 3.8 10.11.2019 | 02:32
      Avatar debian+   Návštevník

      Dik.