Найти в Дзене
Python – это не Питон!..

Python – это не Питон!..

Python – это не Питон!..
подборка · 32 материала
Почему у id(None) и id(print()) – один адрес, но id(print()) не равно None?
*** id(None) # 140705445104448 id(print()) # 140705445104448 id(print()) == None # False id(print()) is None # False Как видим, у id(None) и id(print()) – один адрес, но при этом id(print()) не равно None!.. Это одна из самых интересных и неочевидных особенностей языка Python, которая касается объекта None и его сравнения с другими объектами. *** 1) id(None) • В Python объект None является синглтоном (singleton). Это означает, что в рамках одного процесса (одной запущенной программы) существует только один-единственный экземпляр объекта None...
Почему у id(print) и id(print()) – разные адреса?
*** id(print) # 1738991274000 id(print()) # 140705445104448 Что мы видим? Нечто странное: функция – print() – одна, а адреса – разные! Почему? Разные адреса, которые мы видим при вызове id(print) и id(print()), обусловлены фундаментальным различием между объектом и результатом его вызова. В языке Python всё является объектом: числа, строки, функции, классы. У каждого объекта есть уникальный идентификатор, который возвращает функция id(). *** 1. id(print) • Если мы введём в интерактивном...
Вариации на тему «Hello, World!» в Python. Вариант 11. Используем функцию exec()
Продолжаем вариации на тему «Hello, World!» в Python. Следующие два примера (с разными вариантами оформления многострочной строки) демонстрируют работу встроенной функции exec() в языке Python. *** Функция exec() принимает строку, содержащую валидный Python-код, и выполняет этот код в текущем контексте (то есть в той же области видимости, где вызвана функция). Синтаксис выглядит так: exec(code_string) • code_string – это строка (тип str), внутри которой написан исполняемый код. *** exec(""" print('Hello,...
Вариации на тему «Hello, World!» в Python. Вариант 10. Используем функцию eval()
Продолжаем вариации на тему «Hello, World!» в Python. *** eval("'Hello, World!'") *** Встроенная функция eval() в Python принимает строку и выполняет её как код на языке Python. Если передать ей строку, содержащую корректное выражение, она вычислит его и вернёт результат. • Если передать eval("2 + 2"), функция вернёт число 4. • Если передать eval("print('test')"), функция выполнит команду печати и выведет test. • Если передать просто текст (строковый литерал), функция вернёт этот текст без изменений...
AttributeError, или Досадная ошибка Пола Бэрри…
*** В книге Пола Бэрри «Изучаем программирование на Python» * (кстати, очень хорошая книга по Python!) приведён такой учебный пример (сс. 348 - 349): class CountFromBy: # Создаётся пустой класс pass a = CountFromBy() # Создаются объекты класса b = CountFromBy() с = CountFromBy() c # 0 c.increase() # Каждый вызов метода «increase» увеличивает значение счётчика на единицу c.increase() c.increase() # 3. После трёх вызовов метода «increase» счётчик равен трём *** Но ведь c выводит не 0, а <__main__...
Вариации на тему «Hello, World!» в Python. Вариант 9. Используем внешнюю библиотеку prettytable
Продолжаем вариации на тему «Hello, World!» в Python. *** from prettytable import PrettyTable table = PrettyTable() table.field_names = ["Hello, World!"] # или table.field_names = ['Hello, World!'] table.add_row(["Привет, Мир!"]) # или table.add_row(['Привет, Мир!']) print(table) *** 1. from prettytable import PrettyTable Эта строка импортирует класс PrettyTable из внешней библиотеки prettytable. Эта библиотека не входит в стандартную поставку Python, поэтому её нужно устанавливать отдельно (например, с помощью команды py -3 -m pip install prettytable)...