安装库
pycocotools
用conda安装:
conda install -c conda-forge pycocotools
thop
pip install --upgrade git+https://github.com/Lyken17/pytorch-OpCounter.git
注释规范
主要的参考来自于:Google 开源项目风格指南
但是实际上发现如果使用google风格,vscode的编辑器提示就很不好看,所以还是推荐numpy里翻出来的写法(我也不知道叫什么风格):
string::处理多行字符串与缩进问题
对于在代码块中的多行字符串,如果跟随缩进,那么打印出来的字符串也会带上额外多出来的数层缩进,这非常的难受,因此需要引入textwrap.dedent()
方法处理。在这种处理的情况下,记得将被处理的字符串同样标记为f-string,否则不能访问到其中的变量。关于f-string,更多的内容可以参考Python 3's f-Strings: An Improved String Formatting Syntax (Guide)
下面是例子:
reg::正则表达式
下面是python使用正则表达式一般的写法:
Error: look-behind requires fixed-width pattern
(?<=[^n]\d+_)\d+
这个表达式会报上面的错误。
- 参考stackoverflow - Python Regex Engine - "look-behind requires fixed-width pattern" Error
- 参考51CTO博客 - Python正则表达式细节小记,内容很详细,回头还可以看一看,就是排版有点难看。
总而言之,在使用(?<=[pattern]*)
和(?<![pattern])
时,在[pattern]
里请不要使用 ? , * , + 这些导致宽度不确定的元字符。如果非要用,建议
关于match
需要注意的是match
一定会从头开始匹配。
Dict::可变对象
如果在多次迭代中,直接使用list.append(dict)
,最后你会得到一个所有元素都一样的list,这是因为append不是复制,他只是拿到了dict的指针放进去。如果要避免这种情况,需要使用copy模块: