Вторая по частоте future-функция, которую я использовал, это абсолютный импорт
from __future__ import absolute_import
Что она делает?
Изменения, которые вносит эта инъекция описаны в PEP328
Покажу простой пример.
Допустим, есть такой пакет:
/my_package
/__init__.py
/main.py
/string.py
Смотрим код в my_package/main.py
# main.py
import string
Простой пример готов) Вопрос в том, какой модуль импортируется в данном случае? Есть два варианта:
1. модуль в моём пакете my_package.string
2. стандартный модуль string
И вот тут вступает в дело приоритет импортов. В Python2 порядок следующий: помимо иных источников, раньше ищется модуль внутри текущего пакета, а потом в стандартных библиотеках. Таким образом мы импортнём my_package.string.
Но в Python3 это поведение изменилось. Если мы указываем просто имя пакета, то ищется именно такой модуль, игнорируя имена в текущем пакете. Если мы хотим импортнуть именно подмодуль из нашего пакета то, мы должны теперь явно это указывать.
from my_package import string
или относительный импорт, но с указанием пути относительно текущего модуля main
from . import string
Еще одной неоднозначностью меньше 😎
Подробней про импорты здесь:
https://docs.python.org/3/tutorial/modules.html
#2to3#pep#basic
Lookonchain | ꘜ
An #Ethereum ICO participant who bought 100K $ETH(costing $31K) sold 4,283 $ETH($18.97M) again recently.
He has sold 44,284 $ETH($105M) at an average price of $2,378 since 2021, leaving 55,716 $ETH($261.6M).
The total profit is ~$366.8M, an 11,835x return!
https://etherscan.io/address/0x815c53bf36a3bc8b066715da459b365e6ce6c3ed
https://etherscan.io/address/0x2c06dd922b61514aafedd84488c0c28e6dcf0e99
Lookonchain | ꘜ
An #Ethereum ICO participant who received 20,000 $ETH( cost $6,200, now $86.6M) just sold another 2,300 $ETH($9.91M) 20 minutes ago, leaving him with 1,623 $ETH($6.99M).
https://x.com/lookonchain/status/1729788901756211328