Python является одним из самых популярных в мире языков программирования в мире. Это по многим причинам:
- Легко учить
- Универсальный
- Огромный ассортимент модулей и библиотек
Я почти пользуюсь питоном ежедневно. По пути я поднял несколько умных, но полезных трюков и советов, которые наверняка заставит вас подумать.
Здесь я поделился 5+ из них 😉
>>> (False == False) in [False] # makes sense False >>> False == (False in [False]) # makes sense False >>> False == False in [False] # now what?
Первые два имеет смысл, но что подумать, третий будет печать?
Даже если вы даете или делаете это в противном случае в обоих случаях, вы получите ответ как «ложь», но это неправильно. Почему?
Это связано с тем, что все операции сравнения в Python имеют тот же приоритет, когда они соединяются вместе (то есть когда вы не используете скобки). Что это значит:
Если A, B, C, …, Y, Z – выражения и OP1, OP2, …, OPN являются операторами сравнения, затем OP1 B OP2 C … y Opn z эквивалентно OP1 B и B OP2 C и … y opn. z.
Поэтому третье выражение будет оценивать как (False) и (false в [false])
Который выходит Правда Отказ
Чтобы узнать больше об этом, отправляйтесь к этому СВЯЗЬ
for x in range(7): if x == 6: print(x) print(x)
Первое утверждение печати кажется довольно легко, верно? Это просто будет печатать 6 из-за того, что, если мы поставили. Но как насчет второго оператора печати?
Должен ли он не бросить ошибку, так как вариабельная «X» теперь не имеет значения, и X никогда не определялась за пределами объема для петли …
Но на самом деле это снова напечатает «6». Это связано с тем, что в Python для петель используют массу, в которой они существуют и оставьте их определенную переменную петля позади.
Это также относится, если мы явно определили переменную для цикла в глобальном пространстве имен на глобальном пространстве. В этом случае он будет воспитывать существующую переменную.
У простых слов Python не имеет блоков, в отличие от C/C ++ или Java. Единственный навес в Python – это функция . Если вы объявите переменную в функции, вы можете использовать ее в любом месте внутри него, не имея никаких проблем.
Если вы энтузиасты JavaScript, то для вас есть что-то еще 😉.
Если вы переведете этот код в JavaScript, он сначала будет напечатать «6», а затем «7».
Причина этого – это способ, которым мы итерация в Python. Набор значений, которые переменяют «X», будут явно определяться перед запуском «для цикла». Что не так с JavaScript.
def func(default_arg=[]): default_arg.append("python") return default_arg print(func()) print(func()) print(func())
Как вы думаете, что будет выходом вышеуказанного кода? Это очень интуитивно понятно, что мы получим:
['python'] ['python'] ['python']
Но опять же это не так. Аргумент по умолчанию является мультиремным объектом, таким как «Список» в нашем случае, Python создает его, когда вы определяете функцию, а не каждый раз, когда вы призываете его.
Вместо этого недавно назначенное значение для них используется в качестве значения по умолчанию каждый раз, когда их вызывают.
Таким образом, правильный выход будет:
['Python'] ['python', 'python'] ['python', 'python', 'python']
ПРИМЕЧАНИЕ. Когда мы явно пройдем [] на «Func» в качестве аргумента, значение по умолчанию для переменной default_arg не будет использоваться, поэтому функция вернутся как ожидалось, a.e [‘python’] [«Питон»] [«Питон»].
Чтобы узнать больше о мультипных/неизменных объектах в Python, проверьте это СВЯЗЬ
def func(): try: return 'from_try' finally: return 'from_finally' print(func()) #What will get printed?
Если вы внимательно посмотрите на вышеуказанный код, вы увидите оператор возврата внутри блока «попробуйте». Согласно этому, он должен напечатать «из_три» в качестве вывода.
Но Python Docs штат:
Когда вернуть ** BREAK ** или ** Продолжить ** Заявление выполняется в Shree Suite A TRY … Наконец-то выясните, что предложение окончательно выполняется «на выходе».
Возвращаемое значение функции определяется выполнением последнего оператора возврата. Поскольку флажок окончательно выполняется, оператор возврата, выполняемое в точке Наконец, всегда будет выполнен последним. Следовательно, правильный выход будет from_finally
Отказ
>>> a = 256 >>> b = 256 >>> a is b True >>> a = 257 >>> b = 257 >>> a is b >>> ?
С первого верно, второй должен также быть правдой. не так ли?
Ну нет. Правильный ответ – Ложь Отказ Причина 256 – это существующий объект, но 257 нет.
Что я подразумеваю под этим утверждением, заключается в том, когда вы запускаете Python, числа от -5 до 256 будут выделены. Эти цифры много используются, поэтому имеет смысл просто чтобы они были готовы.
Согласно документам Python:
Текущая реализация сохраняет массив целочисленных объектов для всех целых чисел от -5 до 256, когда вы создаете INT в этом диапазоне, вы просто вернетесь ссылкой на существующий объект.
Вот почему, когда вы присваиваете A & B до 257, генерируются две разные ссылки и «IS» проверяет, если оба операнда относятся к тому же объекту, который не соответствует действительности в этом случае.
Так что это были 5 прохладных причудливых питонов. Я надеюсь, что вам их понравились и надеюсь, что наклон чего-то нового. Но так как заголовок содержит « Пять ++ Фрагменты Python “, у меня есть одна дополнительная часть для вас, которые я уверен, вам понравится 👇
Вы знаете, что вы можете использовать Emojis в вашем коде Python?
Да, Это верно
>>import emoji >>print(emoji.emojize('Python is amazing :thumbs_up:')) Python is amazing 👍
Вот твой Emoji Cheat Lists Отказ Идите и попробуйте это …
Если вам понравилось эти советы и трюки, подумайте о том, чтобы следовать за мной на Twitter потому что это где я больше всего активно разделяю такие трюки Python вместе с другими темами, такими как Docker, Kubernetes, структура данных и алгоритмы данных
Если вам нравится то, что вы читаете здесь, и хотите показать поддержку, подумайте о покупке мне кофе ☕
Оригинал: “https://dev.to/apoorvtyagi/five-cool-python-snippets-that-will-blow-your-mind-hfe”