Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's not body replacement, it's function reference erasing. There is no way in Python to tell something has been replaced or not, since variables are dumb labels and a reference is the same kind for any object. In fact, there is no particular difference between 2 objects in python.

E.G: functions are objects, and any object can be called as a function. And it's just a reference to "something callable" in the namespace mapping (literally a dict in most implementations), which is mutable by definition

Also a compiler flag would not help, since most users don't compile the python VM.

Now, you could put a runtime flag, that list all stuff that are created for the first time in a namespace, and refuse to allow reassignment.

It's possible, but it would break a LOT of things and prevent many patterns.

The last attempt was to put guards, and to assume no replacement, but if a replacement occurs, then at this moment we revert locally this assumption.

The process is refined at each iteration, but there is no turn-key solution as you seem to believe.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: