注意:这种发方法并不是装饰器最常用的功能,但是在降低代码重复上可谓是首屈一指。比如:如果不使用装饰器,上述代码可能会很多:
创新互联-专业网站定制、快速模板网站建设、高性价比睢县网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式睢县网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖睢县地区。费用合理售后完善,十年实体公司更值得信赖。
当然,这里也有一个潜在的风险,就是当装饰器包裹的函数已经用了debug作为参数名,那么装饰器这里将会报错,所以要添加额外的一些判断来完善代码:
最后还剩下一部分比较难理解的地方,我将理解的注释在每行代码上方,这个问题就是,在打印被修饰函数的参数签名时,其实并不能正确显示参数签名,原因是因为被wrapper修饰过后的函数实际上应该使用的是wrapper的参数签名表,例如:
所以,接下来,完成最后最难的一步:
打开命令行终端(在Windows上,可以按Win+R打开“运行”窗口,输入“cmd”后按回车键;在Mac和Linux上,可以打开终端应用程序)。
输入以下命令安装需要的拓展包(以安装numpy拓展包为例):
pip install numpy
如果需要安装的拓展包不是最新版本,可以指定版本号,例如:
pip install numpy==1.19.3
等待安装完成即可。安装完成后,可以通过import语句在Python代码中导入拓展包,例如:
import numpy
可以用Python的扩展来实现。可参考Extending Python with C or C++。
Python本来是C实现的,封装二进制兼容的C++是很容易的。
Java的话得通过JNI来实现,就是说在Python扩展里用C调用Java。
另外,你也可以写一个TCP服务来包装C++/Java的接口,通过网络来调用,这样更通用。