我想告诉我的代码的用户,某些函数需要一个可选取的对象。这是一个从任何项目细节中抽象出来的示例:
import pickle
from typing import Callable
def pickable():
print("I am pickable!")
def get_non_pickable():
# local functions are not pickable
def not_pickable():
print("I am NOT pickable!")
return not_pickable
def pickle_func(func: Callable[[], None]):
with open("data.pickle", "wb") as f:
pickle.dump(func, f, pickle.HIGHEST_PROTOCOL)
# fine:
pickle_func(pickable)
# not fine: should show in my editor that I am passing a non-pickable item
pickle_func(get_non_pickable())
是否可以输入提示,函数
func
中的函数参数pickle_func
必须是可选择的?理想情况下,应保留参数的现有类型提示。
Pickling 保存函数的名称(“标识符”)。取消酸洗需要按名称重新导入函数。为了使其发挥作用,需要在顶层定义该函数。将一个函数包装在另一个函数中违反了这一要求。
我不确定是否有办法输入提示顶级函数。