- 1
- 2
- 3
- 4
- 5
- 6
- 7
class Test(contextlib.ExitStack):
def __init__(self):
super().__init__()
with contextlib.ExitStack() as s:
self.foo = s.enter_context(Foo())
self.bar = s.enter_context(Bar())
self.enter_context(s.pop_all())
правда он скучный, неконсистентный, вербозный, с занудной строгой тупизацией, но зато без обязательной статической, так что в нем приколько в рантайме ловить ашыбки типа '1' != 1, а тк отличный
По сравнению с перлом или машинными кодами?
>с занудной строгой тупизацией
Пиши на жс/"пхп"
В них хуёвое приведение типов, в Lua оно более логичное.
да
и руби
так здесь нет ошибки, на равно/неравно можно любые объекты сравнивать.
print(users[get_user_id()])
ай нежданчик, там вернули '1' а не 1
Остальное это лоу левел кал
З.Ы. А если close исключение кинет? У вас там вроде на это контракта нет?
Питон -- скучный. Там мало магии, там все нужно делать вручную. За это его и любят.
Говорит тот, кто даже contextmanager не осилил. В питоне полно убогой непонятной магии, и становится больше с каждым годом.
ну или надо явно сказать что Kurochka=None, иначе будет ошибка
Создание второго объекта может кинуть исключение. При этом первый уже создан и его надо закрыть. Объясни тупому борманду как это сделать без портянок бойлерплейта.
>портянок
Ну какие там портянки, try/except
Слова не мальчика, но жавоёба.
Тому что мне надо класс, который внутри себя открывает и держит джва файла. А не чтобы каждый клиент за него их открывал двойным with'ом.
>Слова не мальчика, но жавоёба.
А тебе лишь бы не как в жаве?
В винде, имхо, более корректно сделано.
Нет. Нет ничего более тупого, чем "файл занят другим приложением".
и грохаешь
FILE_SHARE_READ:
Enables subsequent open operations on a file or device to request read access.
Otherwise, other processes cannot open the file or device if they request read access.
If this flag is not specified, but the file or device has been opened for read access, the function fails.
FILE_SHARE_WRITE
Enables subsequent open operations on a file or device to request write access.
Otherwise, other processes cannot open the file or device if they request write access.
If this flag is not specified, but the file or device has been opened for write access or has a file mapping with write access, the function fails.
FILE_SHARE_DELETE
Enables subsequent open operations on a file or device to request delete access.
Otherwise, other processes cannot open the file or device if they request delete access.
If this flag is not specified, but the file or device has been opened for delete access, the function fails.
У функции "open" можно указать флаги блокировки:
http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=open&category=2
Ещё есть "flock" и "fcntl":
http://www.opennet.ru/man.shtml?category=2&topic=flock
З.Ы. В "низкоуровневых" крестах это был бы просто объект с двумя полями.
т.е. роль операционной системы будет выполнять интерпретатор/рунтиме php?! Да Вы, батенька, тролль.
Чушь какая
А ничего что там совсем другая модель безопасности (для каждого приложения заводится пользователь "прыщей", права приложениям на основе разрешений), нету разделяемых библиотек, нету свопа (шоб пидор который это придумал в бассейне обосрался)?
ОС это дистр конкретный
>по сути это интерпретатор/рунтиме "Java" поверх операционной системы.
Да, ART и Dalvik несовместимы с Sun/Oracle JVM. Но что основным языком разработки для ART и Dalvik является Java это не отменяет.
нет. Официальный ЯП для разработки под андроид другой.
Угадаешь какой?
не надо никакой .jar. Надо .apk.
На 4PDA обсуждалось:
https://habr.com/post/272391/
что-то я не слышал чтобы процесс умер, а открытый им файл всё еще был открыт.
рефкаунтинг же
- если ты пишешь переиспользуемую библиотеку, то делай все аккуратно ручками, цепочка try-catch и все такое. Чай не нуб, должен понимать, что делаешь, и все предусмотреть (в т.ч. и тупого пользователя).
- если ты пишешь на Питоне большую программу, то ССЗБ.
Может, как-то так?
Ну блин, я и ExitStack'ом могу. Только наследование от него, наверное, лучше убрать (просто хранить его в поле).
Я просто не ожидал, что такие тривиальные задачи (открыть и держать джва файла) в этом вашем питоне так сложно решаются. А до 3.3 - ещё хуже.
ахахахахахах!!!!
ППКС
(а, так это опция Gnu Assembler) Ладно, спасибо, буду знать.
Я о другом - предположим, что стоит такая задача (с ходу не нашел примера лучше). На каком языке писать?
теперь они генерят довольно много кода чтобы компилять хеллоуворлд
я тут давеча видал код
foo & 0377
долго думал ЗАЧЕМ
Главное не упрываться и не превращаться в
https://github.com/reddit-archive/reddit/blob/master/r2/r2/controllers/promotecontroller.py
Функция, например
или вот
в win32api обычно очень подробно документированы все параметры. А тут?
Кроме того наличие параметра jquery -- подозрительно
Заметил странное поведение в терминалах на маке. Если вводить строку кириллицей, например, и во время ввода нажимать backspace (и соответственно видеть, как символ удалился), то потом в строковую переменную попадает какая-то белиберда. Пример (тестовая программа на Go):
ввожу "выход"
удаляю последнюю "д"
ввожу буквы так, что получается "выхооод"
удаляю "оод" и ввожу "д"
Вывожу строку, полученную с input'а: "выхо?о?д"
Это я где-то косячу с кодировками?
Я просто написал примитивное приложение на Go (а до этого такая же ерунда была с Racket), которое читает инпут и выводит то, что прочитало.
Походу надо курить что-то типа https://golang.org/pkg/unicode/
Сервер = твоя прога
Я не знаю, может, цари просто вообще не доверяют всяким ReadLine'ам и юзают посимвольный ввод с последующей обработкой.
зиш так делает, например)
Кратко поясню суть проблемы. Допустим, борманд хочет написать код для ковыряния гит-паков (не спрашивайте, зачем). Гит-пак состоит из джвух файлов: файл с блобами и файл с индексом. Борманд хочет работать с двумя файлами одновременно через нормальный API в виде класса GitPack.
Обычная питономакака начнёт с чего-то вроде (весь код ниже я не проверял, но суть должна быть ясна)Далее, как бы я сделал это в петоне:Для сравнения, если для ошибок используются исключения, крестобог написал бы это просто как обычный конструкторготово, корректная обработка ошибок.
P.S. Если число ресурсов заранее неизвестно, нужно таки юзать убогий ExitStack.
Ну положи в статический метод, если тебя это волнует
https://ideone.com/GAQG5i
Или функциональненькую рекурсию...
Ойбля, сослепу въебал минус... Прости ...
Однажды кто-то спросил питониста "передаются ли аргументы по ссылке или по значению"?
Правильный ответ был ты таков: "Всё и всегда передается по значению, но надо учитывать что объекты хранятся в куче, и ты работаешь только со ссылками на них, а значит передавая в функцию ссылку на объект ты даешь функции возможность изменить его, если конечно это не ридонли объект типа туплы или строки. Кстати, листы и дикты это тоже объекты. В общем всё как в жабе".
Вместо этого развели какую-то кашу:
When asked whether Python function calling model is "call-by-value" or "call-by-reference", the correct answer is: neither
што???
In Python, (almost) everything is an object. What we commonly refer to as "variables" in Python are more properly called names. Likewise, "assignment" is really the binding of a name to an object
Так референс же!
That's a lot of terminology all at once, but those basic terms form the cornerstone of Python's execution model. Compared to, say, C++, the differences are subtle yet important
Правда?
https://jeffknupp.com/blog/2012/11/13/is-python-callbyvalue-or-callbyreference-neither/
Ну ладно, может быть это единственный случай непонимания, да и вроде бы ему там в комментах напихали хуёв
Но нет!
https://www.python-course.eu/passing_arguments.php
Correctly speaking, Python uses a mechanism, which is known as "Call-by-Object",
Да чтож такое то? Зачем писать километры мутного текста вместо простого ответа?
Самое смешное что и официальная дока питона называет это call by assignment (аа!!!) хотя и не так многословно