On Thu, Dec 5, 2019 at 3:41 AM Random832 <random...@fastmail.com> wrote: > > On Wed, Dec 4, 2019, at 08:26, Serhiy Storchaka wrote: > > 03.12.19 20:43, Brett Cannon пише: > > > -1 from me. I can see someone not realizing an operator was changed, > > > assuming it's standard semantics, and then having things break subtly. > > > And debugging this wouldn't be fun either. To me this is monkeypatching > > > without an explicit need for it, i.e. if you really want different > > > semantics in your module then define a function and use that instead of > > > influence-at-a-distance overriding of syntax. > > > > This will also add a significant performance penalty to any code (even > > if you do not use any hooks). -1 from me too. > > My proposal was that any module that never uses any hooks compiles to the > exact same bytecode, and executes exactly the same way, as it does now. Only > modules where the name of the hook is defined get a different operation that > looks for the hook. I specifically wrote it that way to *avoid* any > performance penalty for modules that do not use any hooks, or for operators > other than the one a hook is defined for. > > (There may be some confusion because of the 'if the hook is undefined' clause > in the proposal: I intended that to apply if the hook is deleted or > conditionally assigned - if it's never assigned at all, the code won't look > for it when the operator is used.) >
Which of these are you expecting to be detected, and thus cause the change in bytecode? __operatorhook_or__ = lambda obj1, obj2: ... def init(): global __operatorhook_or__ def __operatorhook_or__(obj1, obj2): ... init() globals()["__operatorhook_or__"] = lambda obj1, obj2: ... exec("def __operatorhook_or__(obj1, obj2): ...") from othermodule import __operatorhook_or__ from othermodule import * ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/EH4LNLGX53KD2KCMUCTX6TL3C3GZ257L/ Code of Conduct: http://python.org/psf/codeofconduct/