我想複製一個函數的簽名來定義一個擴展它的新函數。 Python 3.4,如果版本問題的解決方案。如何複製python函數的簽名並定義一個新函數?
在ham.py
:
def spam(pork *, salt, taste=False):
"""External function I don't control."""
return food
在eggs.py
:
import ham
def breakfast(pork, *, drama, salt, taste=False):
"""The function I want to define, done statically."""
return eggs, ham.spam(pork=pork, salt=salt, taste=taste)
我想定義breakfast
因此,如果用戶安裝了一個不同,但兼容的版本的ham.py
的breakfast
功能將包括對ham.spam
中參數的任何更改。
例:
# Probably not how you do this...
signature = inspect.Signature(breakfast)
breakfast = types.FunctionType(
how-do-i-make-a-multi-line-code-object,
what-do-i-use-for-globals,
name='breakfast',
argdefs=from-signature)
「早餐」是否對其論點採取任何行動,而不是將它們直接傳遞給「垃圾郵件」? – jwodder
@jwodder否,參數直接傳遞。 – ToBeReplaced