文档中的解释,点击进入
若进不去看下边截图:
翻译如下:
- 1、可以作为一个占位符当还没实现代码的时候,例如:if error: … ,这样写代码意味着…比pass更具有代表性(可能写着更方便)
- 2、没看明白啥意思,难道是type(…)?
- 3、作为一个默认值,尤其是当你想区分,传一个none和传一个值的时候
- 4、因为…是个单例,所以应该用is而不是==来判断
1、三点的作用:
type(...) # 说明ellipsis是个对象
输出结果
ellipsis
在函数中使用1:
def testThreeDot(flag):
if flag:
print(flag)
else:...
执行结果:
在函数中使用2:
def testThreeDot(flag=...):
if flag:
print(flag)
else:...
执行结果:
2、箭头的使用:
# 冒号后边的int是建议传入的类型,重点是建议,所以你不传入这种类型也行,这是学习强类型语言,为了提高编译速度
# 箭头后边是建议返回的类型,...相当于pass,感觉可能这样写起来更方便(pass的写四个字母而...只需要点三下)
def testArrow(flag:int) -> None:...
执行结果:
3、 / 的作用:
from pathlib import Path
FILE = Path(__file__).resolve()
ROOT = FILE.parents[0]
print(ROOT)
print(type(ROOT))
def test(defalut=ROOT / 'test'):
print(defalut)
test()
def test2(default='aa'/'test'):
print(default)
test2()
执行结果:
/Users/jjw/Desktop/后端项目/yolov5.6
<class 'pathlib.PosixPath'>
/Users/jjw/Desktop/后端项目/yolov5.6/test
Traceback (most recent call last):
File "/Users/jjw/Desktop/后端项目/yolov5.6/my_test.py", line 16, in <module>
def test2(default='aa'/'test'):
TypeError: unsupported operand type(s) for /: 'str' and 'str'
从结果中可以看出来单纯的 / 并不能单独使用,只有当和PosixPath类型的对象结合使用的时候才可以作为一个路径分隔符使用
对/的进一步说明: 在看YOLOV5源码的时候有一段这样的代码:Path(opt.logdir) / ‘evolve’ 想搞明白为啥是这样写的,最终经断点调试进入Path的源码中,算是将此问题搞明白了
class MyTest:
def __init__(self, args):
print('args:\t', args)
self.args = args
def __truediv__(self, other):
print('other:\t', other)
return self.args+'/'+other
print(MyTest('jjw')/'1.txt')
执行结果:
args: jjw
other: 1.txt
jjw/1.txt