1

Тема: Python 3 конфузить [not in][is not]

1 in {1}    # True
1 is  1     # True

4 not in {1}    # True
4 not is  1     # SyntaxError: invalid syntax

4 in not {1}    # SyntaxError: invalid syntax
4 is not  1     # True

Якшо будете творити мову програмуваня, не треба так робити.

2

Re: Python 3 конфузить [not in][is not]

Просто наслідування англійської граматики, де is — дієслово, in — прийменник, а not з'являється після дієслова, але перед прийменником.

Подякували: leofun01, koala, Chemist-i, HetmanNet4

3

Re: Python 3 конфузить [not in][is not]

Ключові "слова" з двох слів - дійсно збочення, але в C можна навіть unsigned long long int робити, і нічого, всі звикли.

Подякували: leofun011

4

Re: Python 3 конфузить [not in][is not]

koala написав:

Ключові "слова" з двох слів - дійсно збочення, але в C можна навіть unsigned long long int робити, і нічого, всі звикли.

В { C, C++ } це теж не ок. Для того є цілі типи фіксованого розміру (uint64_t). Може під капотом це typedef для того ж unsigned long long int, але то вже проблеми компілера, не мої.

Цікаво, ¿ чи можна в Python зтворити alias'и для таких операторів ?

5

Re: Python 3 конфузить [not in][is not]

Можна, звісно, але синтаксис не дуже буде, на кшталт

object.__isn_t__(other)

чи

object__doesn_t_contain__(other)

До речі, навіть тут послідовність слів навпаки...

Подякували: leofun01, Chemist-i2

6

Re: Python 3 конфузить [not in][is not]

На проджекті мені пойаснили шо те все шо я понаписував є не ок, треба переписати, майже повністю. Як приклад:
Замість

def f(arg):
    pass

треба

def f(arg : list[float]) -> float:
    """<description>"""
    pass

Замість

a = [3,5,6]

треба

a : list[int] = [3,5,6]

Це стосуйеся коду, де типізація мала би бути строга [, але не є і бути не може поки це Python].
Я очікував шо хоча би якесь попередженя буде вилазити коли я зроблю якусь дурницю

a : list[int] = ["a", "b"]

, але ні, інтерпретер все прийняв наче типів там і не було. Виникайе питаня: а для чого воно взагалі треба. І мені відповіли шо це для інших програмістів, які писуть в PyCharm.

І рекомендували хоча би іноді користувати

def f(pos, /, both, *, named):

там де це робить сенс.

7

Re: Python 3 конфузить [not in][is not]

А ви на проєкті лінтером не користуєтеся?

Подякували: leofun011

8

Re: Python 3 конфузить [not in][is not]

Гм, це напевно через пріоритет операцій.
Що таке not 1 ?
Чи що таке 4 not ?

9

Re: Python 3 конфузить [not in][is not]

koala написав:

А ви на проєкті лінтером не користуєтеся?

Всі користують те шо сис.адмін лишив в операційних системах. А хто писе в PyCharm, то вони мають mypy для їх коду. На майбутнє, певно й мені варто буде його поставити і вивчити.

Vo_Vik написав:

Що таке not 1

False

Vo_Vik написав:

Чи що таке 4 not

Користуйу

not(4 in {1})    # True
not(4 is  1 )    # True

і тепер це вже не проблема.