Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.3k
Closed
Description
There is a quite a lot of redundancy in code, function and generator objects.
Intra-object redundancy
- Code objects have four fields ,
co_nlocalsplus,co_nplaincellvars,co_nlocals,co_nfreevars. Any of these fields can be computed from the other three. - Code objects have a qualified name and a name. The name is always the suffix of the qualified name. Changing this to qualifying prefix and name would save space and allow sharing.
- The defaults and keyword defaults for a function are separate and the keyword defaults are a dict. They could be combined into a single array.
- Generator objects have a
gi_codefield, which is redundant, as the frame contains a reference to the code object.
Inter-object redundancy
- Functions and generators have qualified name and name fields, which are almost always the same as the underlying code object. These should be lazily initialized