@ru_python

Страница 890 из 9768
Kill me pls
02.06.2016
08:45:26
Потому что от скачка напряжения что-то перегорело в системнике

Aion
02.06.2016
08:45:31
его и апгрейдить проще и продавать)))

Kill me pls
02.06.2016
08:45:43
Как выбрать ИБС?

Марк
02.06.2016
08:45:51
Кстати, почему list не позволяет инт вставить?

Google
Pavel
02.06.2016
08:46:15
Кстати, почему list не позволяет инт вставить?
потому что ему iterable надо в параметры.

Zart
02.06.2016
08:46:17
вут?

Марк
02.06.2016
08:46:36
А хули тогда в [1] можно?

Zart
02.06.2016
08:47:05
потому что это литерал

Pavel
02.06.2016
08:47:16
А хули тогда в [1] можно?
потому что list('abcde') и ['abcde'] - разные операции.

Zart
02.06.2016
08:47:21
а list() - вызов функции

Марк
02.06.2016
08:47:39
Zart
02.06.2016
08:47:53
Марк
02.06.2016
08:48:37
Такс, стопе. А чем отличие объявление [] от list()?

тип возвращается тот же

В чем фишка?

Zart
02.06.2016
08:49:12
в том что первое литерал, а второе - вызов класса и передача ему параметров

вдобавок они обрабатываются в разных фазах

Google
Марк
02.06.2016
08:49:37
Оо

Где почитать?

Pavel
02.06.2016
08:50:02
[1,2,3] - ты создаёшь список из нескольких элементов прям тут, на месте. А list(iterable) - создаёт список из переданного параметра.

Марк
02.06.2016
08:50:37
In [166]: %timeit {} 10000000 loops, best of 3: 31.1 ns per loop In [167]: %timeit dict() 10000000 loops, best of 3: 119 ns per loop

Походу тут тоже самое

Pavel
02.06.2016
08:51:00
iterable - это любая хрень, с которой можно сделать цикл for in

Марк
02.06.2016
08:52:10
Бля, не зря Болк на собеседованиях по типам гоняет, а не по всякой заумной хуете

Zart
02.06.2016
08:52:50
ты вызываешь python script.py питон сперва читает файл в память. потом парсит и создает аст. на этом этапе ловятся синтакс еггоги если всё ок, идёт обход аст и генерация байткода. на этом этапе строки и прочие литералы как [1, 2, 3] превращаются в константы в объекте кода потом запускается евал цикл, который обрабатывает байткод. на этом этапе происходит вызов list() т.е. вот тот литерал создался один раз и в бинарном виде а лист() вызывается в рантайме и выделяет память каждый раз со всем багажом затрат

Zart
02.06.2016
08:54:35
это всё детали реализации, которые можно курить из исходников

Pavel
02.06.2016
08:54:55
нет
для импортов.

Zart
02.06.2016
08:54:59
в этом ключевая разница между скриптами и модулями

для скриптов обычно создается объект-модуль __main__

и в него пихается распарсенный код

Марк
02.06.2016
08:55:50
А если я его не создаю?

Zart
02.06.2016
08:55:54
но это не всегда

кого "его"?

Марк
02.06.2016
08:56:42
А.. Я думал ты про if __main__ конструкцию

Zart
02.06.2016
08:57:17
эта конструкция именно потому и работает, что питон внутри создает специальный модуль

Google
Zart
02.06.2016
08:57:43
в общем скрипты не проходят по тому же пути что и импорт модулей

Марк
02.06.2016
08:58:00
Чет прикинул, что никогда не задумывался, откуда она берется и ваще зачем. ?

Zart
02.06.2016
08:58:10
сами исходники парсится одинаково, но механизм загрузки радикально разный

Марк
02.06.2016
09:01:36
ты про разницу между import и.. чем? не уловил

Pavel
02.06.2016
09:03:20
ты про разницу между import и.. чем? не уловил
разница между import script и python script.py.

Sergey
02.06.2016
09:04:09
В принципе с from, to, subject я разобрался, работает стабильно хорошо со всех ящиков, всегда верно декодирует, остался текст. Есть какой то разумный способ отсечь reply сообщения?

Марк
02.06.2016
09:07:15
разница между import script и python script.py.
Всмысле разница между скормлением пайтону куска кода и куска кода с импортом?

Марк
02.06.2016
09:07:29
Хочу просто точно понять

Zart
02.06.2016
09:08:45
код на питоне обычно начинает со скриптов

Zart
02.06.2016
09:09:07
но может быть и через compile(), или из С апи PyRun*

In-Reply-To
старею 8(

Марк
02.06.2016
09:09:31
for i in range(1,10000): import re

Че будет?

Zart
02.06.2016
09:09:47
импорт кэшируется

9999 раз потом будет быстрый sys.modules['re']

Марк
02.06.2016
09:11:39
Что-то может не кешироваться?

Какой-нибудь велосипед

Zart
02.06.2016
09:11:55
эм... что?

Google
Zart
02.06.2016
09:12:11
модули в питоне глобальны, потому и кэш

Марк
02.06.2016
09:12:23
Что-то при import, где кеширование не будет работать

Zart
02.06.2016
09:12:54
вопрос какойто бессмысленный

Марк
02.06.2016
09:13:20
Считай это обработкой исключений

Zart
02.06.2016
09:13:27
импорт разумеется может сфейлить

Pavel
02.06.2016
09:13:47
Что-то при import, где кеширование не будет работать
можно перезагрузить модуль, reload(module) во втором питоне, в третьем куда-то засунули.

Zart
02.06.2016
09:13:49
что не загрузилось - то в сис.модулес не попадет.. а то что успело - останется

в imp модуль сунули

Марк
02.06.2016
09:14:25
import - это стек какой-то?

Zart
02.06.2016
09:14:29
а в 3.4 вообще радикально поменялся механизм импорта

нет..

описание механизма импорта в питоне - это тема очень-очень долгой лекции...

о том, как на самом деле это вызов функции __import__, о хуках, о двухфазном механизме поиска и загрузки, о импорт локе...

о пакадж лоадерах, о встроенных модулях, о заморозке

https://www.youtube.com/watch?v=_p73PZIDQuA

Марк
02.06.2016
09:16:56
А где почитать?

Zart
02.06.2016
09:17:44
https://docs.python.org/3/reference/import.html

https://speakerdeck.com/pyconslides/how-import-works-by-brett-cannon

Марк
02.06.2016
09:19:37
Спасибо. А то мое серденько чуе, шо с импортом не так всё просто, а ленивый москаль каже,что и так пойдет :D

Zart
02.06.2016
09:19:51
там очень дохера всякого

Google
Zart
02.06.2016
09:20:15
бретт работал добрых 5 лет чтобы переделать систему импорта из сишной в питоновую

его коммиты импортлиба шли где-то с 3.2 питона чтоль, и работа была завершена только к 3.4, емнимс

а ведь когда-то у питона пакаджей не было..

и импорты были изначально относительными, что приводило к ряду косяков

скажем написал ты модуль string.py а в соседнем модуле у тебя import string хуяк и начал возвращать твой код, вместо стдлибовского модуля

Марк
02.06.2016
09:23:24
Какая милота

Zart
02.06.2016
09:23:51
исправили к 2.5

Марк
02.06.2016
09:25:46
Меня больше напрягало, что в условых трех модулях есть импорт одной либы. И хз, как она загружается

Zart
02.06.2016
09:26:49
а еще в питоне есть неймспейс пакаджи

Марк
02.06.2016
09:27:19
Тут даже интересней: есть модуль A с неким классом. И модуль B с неким классом. Они вызываются в модуле C. Почему бы import в модуле С не сделать глобальным для обоих

Zart
02.06.2016
09:27:45
не понял суть

D
02.06.2016
09:27:49
Господа, теоретический нубский вопрос. Можно ли на питоне написать RSS-ридер с возможность автоматической рассылки по почте одной кнопкой?

Pavel
02.06.2016
09:28:00
можно.

Zart
02.06.2016
09:28:02
модулю ц придётся импортировать и а и б

Марк
02.06.2016
09:28:31
не понял суть
import re/ import re/ global import re

Zart
02.06.2016
09:28:41
нахер такое

D
02.06.2016
09:29:10
можно.
охуенно. теперь бы знать, с чего начать

Марк
02.06.2016
09:29:11
Чтобы не импорить каждый раз в каждом классе

Zart
02.06.2016
09:29:25
модули уже импортированы. но "import something" - это грубо говоря something = __import__('something', ...)

Pavel
02.06.2016
09:29:28

Страница 890 из 9768