{"id":160,"date":"2024-08-05T07:36:00","date_gmt":"2024-08-05T07:36:00","guid":{"rendered":"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/"},"modified":"2024-08-05T07:36:00","modified_gmt":"2024-08-05T07:36:00","slug":"python-loginiu-operatoriu-paslaptys","status":"publish","type":"post","link":"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/","title":{"rendered":"\u201ePython\u201c logini\u0173 operatori\u0173 paslaptys"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\">\n<p>Login\u0117s operacijos vaidina svarb\u0173 vaidmen\u012f programuojant.  Jie naudojami s\u0105lygin\u0117ms konstrukcijoms kurti ir sud\u0117tingiems algoritmams sudaryti.  Python sistemoje login\u0117s operacijos atliekamos naudojant loginius operatorius:<\/p>\n<ul>\n<li>\n<code>not<\/code>  &#8211; loginis neigimas<\/li>\n<li>\n<code>and<\/code>  &#8211; loginis junginys<\/li>\n<li>\n<code>or<\/code>  &#8211; loginis disjunkcija<\/li>\n<\/ul>\n<p>\u0160iame straipsnyje kalb\u0117sime apie neakivaizd\u017eias detales ir pasl\u0117ptas logini\u0173 operatori\u0173 veikimo Python ypatybes.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Turinys:<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Tiesos_lenteles_loginiams_operatoriams\" >Tiesos lentel\u0117s loginiams operatoriams<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Tiesos_lentele_not_Operatorius\" >Tiesos lentel\u0117 not Operatorius:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Tiesos_lentele_and_Operatorius\" >Tiesos lentel\u0117 and Operatorius:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Tiesos_lentele_or_Operatorius\" >Tiesos lentel\u0117 or Operatorius:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Tiesos_ir_klaidingos_savokos\" >Tiesos ir klaidingos s\u0105vokos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#The_not_operatorius\" >The not operatorius<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#The_and_ir_or_Operatoriai\" >The and ir or Operatoriai<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Loginiai_operatoriai_yra_tingus\" >Loginiai operatoriai yra ting\u016bs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Loginiu_operatoriu_prioritetas\" >Logini\u0173 operatori\u0173 prioritetas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Loginiu_operatoriu_ypatumai\" >Logini\u0173 operatori\u0173 ypatumai<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/infonaujiena.lt\/index.php\/2024\/08\/05\/python-loginiu-operatoriu-paslaptys\/#Santrauka\" >Santrauka<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Tiesos_lenteles_loginiams_operatoriams\"><\/span>Tiesos lentel\u0117s loginiams operatoriams<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Esame \u012fprat\u0119, kad programavimo kalbose gr\u012f\u017eta loginiai operatoriai <code>True<\/code> arba <code>False<\/code> vertybes pagal j\u0173 tiesos lenteles.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Tiesos_lentele_not_Operatorius\"><\/span>Tiesos lentel\u0117 <code>not<\/code> Operatorius:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table class=\"table table-bordered table-hover\">\n<thead>\n<tr>\n<th><code>a<\/code><\/th>\n<th><code>not a<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Netiesa<\/td>\n<td>Tiesa<\/td>\n<\/tr>\n<tr>\n<td>Tiesa<\/td>\n<td>Netiesa<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"Tiesos_lentele_and_Operatorius\"><\/span>Tiesos lentel\u0117 <code>and<\/code> Operatorius:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table class=\"table table-bordered table-hover\">\n<thead>\n<tr>\n<th><code>a<\/code><\/th>\n<th><code>b<\/code><\/th>\n<th><code>a and b<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Netiesa<\/td>\n<td>Netiesa<\/td>\n<td>Netiesa<\/td>\n<\/tr>\n<tr>\n<td>Netiesa<\/td>\n<td>Tiesa<\/td>\n<td>Netiesa<\/td>\n<\/tr>\n<tr>\n<td>Tiesa<\/td>\n<td>Netiesa<\/td>\n<td>Netiesa<\/td>\n<\/tr>\n<tr>\n<td>Tiesa<\/td>\n<td>Tiesa<\/td>\n<td>Tiesa<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"Tiesos_lentele_or_Operatorius\"><\/span>Tiesos lentel\u0117 <code>or<\/code> Operatorius:<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table class=\"table table-bordered table-hover\">\n<thead>\n<tr>\n<th><code>a<\/code><\/th>\n<th><code>b<\/code><\/th>\n<th><code>a or b<\/code><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Netiesa<\/td>\n<td>Netiesa<\/td>\n<td>Netiesa<\/td>\n<\/tr>\n<tr>\n<td>Netiesa<\/td>\n<td>Tiesa<\/td>\n<td>Tiesa<\/td>\n<\/tr>\n<tr>\n<td>Tiesa<\/td>\n<td>Netiesa<\/td>\n<td>Tiesa<\/td>\n<\/tr>\n<tr>\n<td>Tiesa<\/td>\n<td>Tiesa<\/td>\n<td>Tiesa<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Kai logini\u0173 operatori\u0173 operandai yra <code>True<\/code> ir <code>False<\/code>Python logini\u0173 operatori\u0173 elgesys taip pat atitinka \u0161ias tiesos lenteles.<\/p>\n<pre><code class=\"language-python\">print(not True)\nprint(not False)\nprint(False and True)\nprint(True and True)\nprint(False or True)\nprint(False or False)\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>False\nTrue\nFalse\nTrue\nTrue\nFalse\n<\/code><\/pre>\n<p>Ta\u010diau Python neapsiriboja vien tik <code>True<\/code> ir <code>False<\/code> kaip operandai loginiams operatoriams.  Operandai <code>not<\/code>, <code>and<\/code>ir <code>or<\/code> operatoriai gali b\u016bti bet koki\u0173 kit\u0173 duomen\u0173 tip\u0173 objektai.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tiesos_ir_klaidingos_savokos\"><\/span>Tiesos ir klaidingos s\u0105vokos<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Viena i\u0161 svarbi\u0173 Python ypatybi\u0173 yra teising\u0173 ir klaiding\u0173 objekt\u0173 samprata.  Bet koks Python objektas gali b\u016bti \u012fvertintas kaip <code>True<\/code> arba <code>False<\/code>.  Objektai, kurie vertina <code>True<\/code> yra vadinami tiesa objektais, o objektai, kurie vertina <code>False<\/code> vadinami klaidingais objektais.<\/p>\n<p>\u012emontuoti netikri objektai apima:<\/p>\n<ul>\n<li>Vert\u0117 <code>False<\/code>\n<\/li>\n<li>Vert\u0117 <code>None<\/code>\n<\/li>\n<li>Skaitiniai nuliai: <code>0<\/code>, <code>0.0<\/code>, <code>0j<\/code>, <code>Decimal(0)<\/code>, <code>Fraction(0, 1)<\/code>\n<\/li>\n<li>Tu\u0161\u010dios sekos ir kolekcijos: <code>''<\/code>, <code>()<\/code>, <code>()<\/code>, <code>{}<\/code>, <code>set()<\/code>, <code>range(0)<\/code>\n<\/li>\n<\/ul>\n<p>Kiti integruot\u0173 duomen\u0173 tip\u0173 objektai yra tikrovi\u0161ki objektai.  Pasirinktini\u0173 klasi\u0173 egzemplioriai pagal numatytuosius nustatymus taip pat yra teisingi objektai.<\/p>\n<p>Nor\u0117dami konvertuoti objektus \u012f <code>True<\/code> arba <code>False<\/code>\u012fmontuotas <code>bool()<\/code> funkcija naudojama.<\/p>\n<pre><code class=\"language-python\"># Falsy objects\nprint(bool(False))\nprint(bool(None))\nprint(bool(0))\nprint(bool(0.0))\nprint(bool(()))\nprint(bool(''))\nprint(bool({}))\n\n# Truthy objects\nprint(bool(True))\nprint(bool(123))\nprint(bool(69.96))\nprint(bool('beegeek'))\nprint(bool((4, 8, 15, 16, 23, 42)))\nprint(bool({1, 2, 3}))\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>False\nFalse\nFalse\nFalse\nFalse\nFalse\nFalse\nTrue\nTrue\nTrue\nTrue\nTrue\nTrue\n<\/code><\/pre>\n<p>\u201ePython\u201c teising\u0173 ir klaiding\u0173 objekt\u0173 samprata leid\u017eia dirbti su s\u0105lyginiais operatoriais papras\u010diau.<\/p>\n<p>Pavyzd\u017eiui, \u0161is kodas:<\/p>\n<pre><code class=\"language-python\">if len(data) &gt; 0:\n    ...\n\nif value == True:\n    ...\n\nif value == False:\n    ...\n<\/code><\/pre>\n<p>galima perra\u0161yti taip:<\/p>\n<pre><code class=\"language-python\">if data:\n    ...\n\nif value:\n    ...\n\nif not value:\n    ...\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"The_not_operatorius\"><\/span>The <code>not<\/code> operatorius<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kaip \u017einome, operandas <code>not<\/code> operatorius gali b\u016bti bet kokio tipo objektas.  Jei operandas skiriasi nuo <code>True<\/code> ir <code>False<\/code>, jis vertinamas pagal teising\u0173 ir klaiding\u0173 objekt\u0173 samprat\u0105.  Rezultatas i\u0161 <code>not<\/code> operatorius visada <code>True<\/code> arba <code>False<\/code>.<\/p>\n<pre><code class=\"language-python\">print(not False)\nprint(not None)\nprint(not 0)\nprint(not 0.0)\nprint(not ())\nprint(not '')\nprint(not {})\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>True\nTrue\nTrue\nTrue\nTrue\nTrue\nTrue\n<\/code><\/pre>\n<pre><code class=\"language-python\">print(not True)\nprint(not 123)\nprint(not 69.96)\nprint(not 'beegeek')\nprint(not (4, 8, 15, 16, 23, 42))\nprint(not {1, 2, 3})\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>False\nFalse\nFalse\nFalse\nFalse\nFalse\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"The_and_ir_or_Operatoriai\"><\/span>The <code>and<\/code> ir <code>or<\/code> Operatoriai<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Operandai <code>and<\/code> ir <code>or<\/code> operatoriai, tokie kaip <code>not<\/code> operatorius, gali b\u016bti bet kokio tipo duomen\u0173 objektai.  Analogi\u0161kai su <code>not<\/code> operatorius, galite manyti, kad rezultatas <code>and<\/code> ir <code>or<\/code> operatoriai taip pat <code>True<\/code> arba <code>False<\/code>.  Ta\u010diau \u0161ie operatoriai gr\u0105\u017eina vien\u0105 i\u0161 savo operand\u0173.  Kuris i\u0161 j\u0173 priklauso nuo paties operatoriaus.<\/p>\n<pre><code class=\"language-python\">print(None or 0)\nprint(0 or 5)\nprint('beegeek' or None)\nprint((1, 2, 3) or (6, 9))\n\nprint(1 or 'beegeek' or None)\nprint(0.0 or 'habr' or {'one': 1})\nprint(0 or '' or (6, 9))\nprint(0 or '' or ())\nprint(0 or '' or () or {})\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>0\n5\nbeegeek\n(1, 2, 3)\n1\nhabr\n(6, 9)\n()\n{}\n<\/code><\/pre>\n<p>Kaip matome, <code>or<\/code> operatorius kiekvien\u0105 operand\u0105 \u012fvertina kaip teising\u0105 arba klaiding\u0105 objekt\u0105, bet negr\u012f\u017eta <code>True<\/code> arba <code>False<\/code>bet pirmasis teisingas objektas arba paskutinis objektas, jei login\u0117je i\u0161rai\u0161koje teising\u0173 objekt\u0173 nerasta.<\/p>\n<p>Pana\u0161iai, <code>and<\/code> operatorius elgiasi taip pat.<\/p>\n<pre><code class=\"language-python\">print(None and 10)\nprint(5 and 0.0)\nprint('beegeek' and {})\nprint((1, 2, 3) and (6, 9))\n\nprint(1 and 'beegeek' and None)\nprint('habr' and 0 and {'one': 1})\nprint(10 and (6, 9) and ())\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>None\n0.0\n{}\n(6, 9)\nNone\n0\n()\n<\/code><\/pre>\n<p>The <code>and<\/code> operatorius gr\u0105\u017eina pirm\u0105j\u012f klaiding\u0105 objekt\u0105 arba paskutin\u012f objekt\u0105, jei login\u0117je i\u0161rai\u0161koje nerasta klaiding\u0173 objekt\u0173.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loginiai_operatoriai_yra_tingus\"><\/span>Loginiai operatoriai yra ting\u016bs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Python loginiai operatoriai yra ting\u016bs.  Tai rei\u0161kia, kad gr\u0105\u017eintas operandas nustatomas \u012fvertinus vis\u0173 operand\u0173 teisingum\u0105 i\u0161 kair\u0117s \u012f de\u0161in\u0119, kol jis tampa nereik\u0161mingas:<\/p>\n<ul>\n<li>Jei kairysis operandas <code>or<\/code> operatorius yra tikras objektas, bendras login\u0117s i\u0161rai\u0161kos rezultatas yra <code>True<\/code>nepaisant tinkamo operando.<\/li>\n<li>Jei kairysis operandas <code>and<\/code> operatorius yra klaidingas objektas, bendras login\u0117s i\u0161rai\u0161kos rezultatas yra <code>False<\/code>nepaisant tinkamo operando.<\/li>\n<\/ul>\n<p>\u0160is mechanizmas vadinamas trumpojo jungimo \u012fvertinimu ir j\u012f naudoja interpretatorius skai\u010diavimams optimizuoti.  Apsvarstykite \u0161\u012f pavyzd\u012f, kuris parodo tok\u012f elges\u012f.<\/p>\n<pre><code class=\"language-python\">def f():\n    print('bee')\n    return 3\n  \nif True or f():\n    print('geek')\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>geek\n<\/code><\/pre>\n<p>Kairysis operandas <code>or<\/code> operatorius yra tikras objektas (<code>True<\/code>), tod\u0117l nereikia vertinti tinkamo operando, o tai rei\u0161kia, kad reikia skambinti <code>f()<\/code> funkcija.  Kadangi funkcija n\u0117ra i\u0161kvie\u010diama, i\u0161vestis neapima eilut\u0117s <code>bee<\/code>.  Bendras login\u0117s i\u0161rai\u0161kos rezultatas yra <code>True<\/code>tod\u0117l s\u0105lygos s\u0105lyginiame bloke yra vykdomos instrukcijos, ir mes matome eilut\u0119 <code>geek<\/code> i\u0161\u0117jime.<\/p>\n<p>Prie\u0161ingai, \u0161is kodas:<\/p>\n<pre><code class=\"language-python\">def f():\n    print('bee')\n    return 3\n  \nif True and f():\n    print('geek')\n<\/code><\/pre>\n<p>\u0160is kodas i\u0161veda:<\/p>\n<pre><code>bee\ngeek\n<\/code><\/pre>\n<p>Kairysis operandas <code>and<\/code> operatorius yra tikras objektas (<code>True<\/code>), tod\u0117l reikia \u012fvertinti tinkam\u0105 operand\u0105, o tai rei\u0161kia, kad reikia i\u0161kviesti <code>f()<\/code> funkcija.  D\u0117l to funkcijos instrukcijos yra vykdomos ir mes matome eilut\u0119 <code>bee<\/code> i\u0161\u0117jime.  Funkcija gr\u0105\u017eina skai\u010di\u0173 <code>3<\/code>, kuris taip pat yra tikras objektas.  Tod\u0117l bendras login\u0117s i\u0161rai\u0161kos rezultatas yra <code>3<\/code>ir s\u0105lygos s\u0105lyginio bloko instrukcijos yra vykdomos, ir mes matome eilut\u0119 <code>geek<\/code> i\u0161\u0117jime.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loginiu_operatoriu_prioritetas\"><\/span>Logini\u0173 operatori\u0173 prioritetas<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Svarbu atsiminti logini\u0173 operatori\u0173 prioritet\u0105.  \u017demiau pateikiami loginiai operatoriai ma\u017e\u0117jan\u010dia prioriteto tvarka (i\u0161 vir\u0161aus \u012f apa\u010di\u0105):<\/p>\n<p>Pagal logini\u0173 operatori\u0173 prioritet\u0105, \u0161is kodas:<\/p>\n<pre><code class=\"language-python\">a = 0\nb = 7\nc = 10\nprint(not a and b or not c)        # 7\n<\/code><\/pre>\n<p>yra lygiavertis:<\/p>\n<pre><code class=\"language-python\">a = 0\nb = 7\nc = 10\nprint(((not a) and b) or (not c))  # 7\n<\/code><\/pre>\n<p>Palyginti su kitais Python operatoriais (<\/p>\n<p>pavyzd\u017eiui, aritmetiniai operatoriai), loginiai operatoriai turi ma\u017eiausi\u0105 prioritet\u0105.  Jei norite pakeisti operatori\u0173 prioritet\u0105, naudokite skliaustus.<\/p>\n<p>Pavyzd\u017eiui, \u0161is kodas:<\/p>\n<pre><code class=\"language-python\">a = 1\nb = 2\nc = 3\nd = 4\n\nprint(a + b and c + d)         # 7\n<\/code><\/pre>\n<p>yra lygiavertis:<\/p>\n<pre><code class=\"language-python\">a = 1\nb = 2\nc = 3\nd = 4\n\nprint((a + b) and (c + d))     # 7\n<\/code><\/pre>\n<p>Bet toks kodas:<\/p>\n<pre><code class=\"language-python\">a = 1\nb = 2\nc = 3\nd = 4\n\nprint(a + (b and c) + d)       # 5\n<\/code><\/pre>\n<p>yra lygiavertis:<\/p>\n<pre><code class=\"language-python\">a = 1\nb = 2\nc = 3\nd = 4\n\nprint(a + (b and c) + d)       # 5\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Loginiu_operatoriu_ypatumai\"><\/span>Logini\u0173 operatori\u0173 ypatumai<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Jei logini\u0173 operatori\u0173 operandai yra sud\u0117tingi objektai, rezultatas gali b\u016bti netik\u0117tas.  Pa\u017ei\u016br\u0117kime \u012f pavyzd\u012f:<\/p>\n<pre><code class=\"language-python\">d1 = {'a': 1}\nd2 = {'b': 2}\nresult = d1 or d2\nprint(result)                  # {'a': 1}\nresult('a') += 10\nprint(d1)                      # {'a': 11}\n<\/code><\/pre>\n<p>Kaip matome, <code>or<\/code> operatorius gr\u0105\u017eina pirm\u0105j\u012f tikr\u0105j\u012f objekt\u0105 (<code>d1<\/code>) ir priskiria j\u012f <code>result<\/code> kintamasis.  Jei tada pakeisime reik\u0161m\u0119 raktu <code>'a'<\/code> viduje <code>result<\/code> \u017eodynas, \u017eodynas <code>d1<\/code> taip pat pasikeis, nes abu kintamieji nurodo t\u0105 pat\u012f objekt\u0105.<\/p>\n<p>Jei pavyzd\u012f perra\u0161ysime glaus\u010diau, paai\u0161k\u0117s, kod\u0117l taip nutinka:<\/p>\n<pre><code class=\"language-python\">d1 = {'a': 1}\nd2 = {'b': 2}\nd = d1 if d1 else d2\nd('a') += 10\nprint(d1)                      # {'a': 11}\n<\/code><\/pre>\n<p>Pana\u0161iai elgesys <code>and<\/code> operatorius gali parodyti:<\/p>\n<pre><code class=\"language-python\">d1 = {'a': 1}\nd2 = {'b': 2}\nresult = d1 and d2\nprint(result)                  # {'b': 2}\nresult('b') += 10\nprint(d2)                      # {'b': 12}\n<\/code><\/pre>\n<p>The <code>and<\/code> operatorius gr\u0105\u017eina antr\u0105j\u012f objekt\u0105, jei pirmasis yra tikras objektas.  Jei reik\u0161m\u0117 pagal rakt\u0105 <code>'b'<\/code> tada pakei\u010diamas <code>result<\/code> \u017eodynas, <code>d2<\/code> \u017eodynas taip pat pasikeis, nes abu kintamieji nurodo t\u0105 pat\u012f objekt\u0105.<\/p>\n<p>Trumpesne forma:<\/p>\n<pre><code class=\"language-python\">d1 = {'a': 1}\nd2 = {'b': 2}\nd = d2 if d1 else d1\nd('b') += 10\nprint(d2)                      # {'b': 12}\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Santrauka\"><\/span>Santrauka<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Python programoje loginiai operatoriai naudojami s\u0105lygin\u0117ms konstrukcijoms kurti ir sud\u0117tingiems algoritmams sudaryti.  Ta\u010diau jie taip pat turi neakivaizd\u017ei\u0173 detali\u0173 ir pasl\u0117pt\u0173 funkcij\u0173:<\/p>\n<ul>\n<li>Rezultatas i\u0161 <code>not<\/code> operatorius visada <code>True<\/code> arba <code>False<\/code>bet rezultatas <code>and<\/code> ir <code>or<\/code> operatoriai gali b\u016bti bet koks objektas.<\/li>\n<li>The <code>not<\/code> operatorius apver\u010dia operando teisingum\u0105, o <code>and<\/code> operatorius gr\u0105\u017eina pirm\u0105j\u012f klaiding\u0105 objekt\u0105 arba paskutin\u012f objekt\u0105, o <code>or<\/code> operatorius gr\u0105\u017eina pirm\u0105 tikr\u0105 objekt\u0105 arba paskutin\u012f objekt\u0105.<\/li>\n<li>Python loginiai operatoriai yra ting\u016bs, tai rei\u0161kia, kad jie vertina operandus tik tol, kol tampa akivaizdus bendras login\u0117s i\u0161rai\u0161kos rezultatas.<\/li>\n<li>Loginiai operatoriai turi tam tikr\u0105 prioritet\u0105 vienas kito ir kit\u0173 Python operatori\u0173 at\u017evilgiu.<\/li>\n<li>Logini\u0173 operatori\u0173 elgesys gali b\u016bti netik\u0117tas, kai j\u0173 operandai yra sud\u0117tingi objektai, nes operatoriai gr\u0105\u017eina nuorodas \u012f objektus, o ne j\u0173 kopijas.<\/li>\n<\/ul>\n<p>Python logini\u0173 operatori\u0173 ypatum\u0173 supratimas leid\u017eia para\u0161yti efektyvesn\u012f ir efektyvesn\u012f kod\u0105.<\/p>\n<\/p><\/div>\n<p>Jei tekste radote klaid\u0105, si\u0173skite prane\u0161im\u0105 autoriui pa\u017eym\u0117dami klaid\u0105 ir paspausdami Ctrl-Enter.<\/p>\n<p><br \/>\n<br \/><a href=\"https:\/\/techplanet.today\/post\/secrets-of-logical-operators-in-python\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Login\u0117s operacijos vaidina svarb\u0173 vaidmen\u012f programuojant. Jie naudojami s\u0105lygin\u0117ms konstrukcijoms kurti ir sud\u0117tingiems algoritmams sudaryti. Python sistemoje login\u0117s operacijos atliekamos naudojant loginius operatorius: not &#8211; loginis neigimas and &#8211; loginis junginys or &#8211; loginis disjunkcija \u0160iame straipsnyje kalb\u0117sime apie neakivaizd\u017eias detales ir pasl\u0117ptas logini\u0173 operatori\u0173 veikimo Python ypatybes. Tiesos lentel\u0117s loginiams operatoriams Esame \u012fprat\u0119, kad [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":161,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technologijos"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/comments?post=160"}],"version-history":[{"count":0,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/posts\/160\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/media\/161"}],"wp:attachment":[{"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/categories?post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infonaujiena.lt\/index.php\/wp-json\/wp\/v2\/tags?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}