在日常生活中下载电视剧后导入手机、Pad中看,因文件名特别长不利于查找电视剧顺序,需要对文件进行批量重命名. 例如:将文件夹中所有的文件名的“【www.oicqzone.com】逃出克隆岛
顺晟科技
2021-06-16 10:45:09
248
我们写代码的时候,经常会遇到这样的问题。有几种不同的功能,我们希望它们都执行一些共同的功能,然后各自执行不同的功能。比如我们写神经网络的时候,定义了很多种层,然后希望在建网络的时候输出每一层的名字。这个功能怎么实现?
方法1:
def conv(.):
印刷(《conv》)
.
def fc(.):
打印(' fc ')
.
.
这样在调用的时候会依次输出图层名称,但是这样真的很费时费力。每个print()都需要手动输入。有什么简单的方法吗?
方法2:
def print_info(layer,*args,**kwargs):
打印(层。__name__)
层(.)
def fc(.):
.
def conv(.):
.
.
调用时,使用print_info(图层)代替,如调用卷积图层时使用print_info(conv)。然而,这种方法有明显的缺点。首先,每次调用prin_info函数和传递参数都很麻烦。其次,破坏了原有的代码逻辑。
方法3:
def打印信息(层):
def get_layer(*args,**kwargs):
打印(层。__name__)
层(.)
返回get_layer
def fc(.):
.
def conv(.):
.
调用时,使用func=print _ info(func);Func(…)代替,如调用卷积层时conv=print _ info(conv);conv(……).这里print_info()是一个简单的decorator,它包装了真正的核心get_layer()函数。这种方法更大的优点是,它可以在不改变原始代码的情况下给函数添加额外的函数。但是我们还是不满意。以后叠层的时候每次都要做作业吗?当然不是。
方法4:
def打印信息(层):
def get_layer(*args,**kwargs):
打印(层。__name__)
层(.)
返回get_layer
@print_info
def fc(.):
.
@print_info
def conv(.):
.
现在可以像以前一样直接叫conv,fc(),相当于写方法3。这就是我们所说的语法糖,让原本苦涩的代码结构变得甜蜜。
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06
16
2021-06