Возможно ли в python получить неопределённое поведение? И если возможно, то как?
Анонимный пользователь Изменен статус публикации
Python выдаёт 10, в нем нет инкремента в таком виде:
i = 5 i = ++i + ++i print i class Foo: def __init__(self, num): self.num = num def inc(self): self.num += 1 return self.num i = Foo(5) print(i.inc() + i.inc())
потому, что интерпретатор вычисляет все по порядку.
Но если чуток подумать и довести все до логического ума, то все таки 14
class Foo: def __init__(self, num): self.num = num def inc(self): self.num += 1 return self def __add__(self, right): return Foo(self.num + right.num) def __repr__(self): return repr(self.num) i = Foo(5) print(i.inc() + i.inc())
Необходим модуль bytecode(для генерации байткода).
import types import bytecode from bytecode import ConcreteInstr code = bytecode.Bytecode() code.append(ConcreteInstr('POP_TOP')) stop_signal = types.FunctionType(code.to_code(), {}) stop_signal() #в доках питона не сказано что здесь произойдет сегфолт.(хотя это известно)