Python 中的... 三点、箭头(->)、/ 分别的作用

文档中的解释,点击进入

若进不去看下边截图:

在这里插入图片描述

翻译如下:

  • 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

从上边执行的结果来看,其实就是重写了除法这个运算符,经过断点调试你会发现,创建完对象后当解析到/的时候会调用魔法方法__truediv__,所以重写魔法方法__truediv__即可

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
make /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xproto.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/bigreq.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xc_misc.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/composite.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/damage.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/dpms.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/dri2.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/glx.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/randr.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/record.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/render.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/res.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/screensaver.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/shape.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/shm.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/sync.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xevie.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xf86dri.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xfixes.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xinerama.xml /usr/bin/python ./c_client.py -p //usr/lib/python3.8/site-packages //usr/share/xcb/xinput.xml Traceback (most recent call last): File "./c_client.py", line 1039, in <module> module.register() File "/usr/lib/python2.7/dist-packages/xcbgen/state.py", line 93, in register matcher.execute(self, self.namespace) File "/usr/lib/python2.7/dist-packages/xcbgen/matcher.py", line 115, in execute funcs[elt.tag](elt, module, namespace) KeyError: 'eventstruct' make: *** [Makefile:1018: xinput.c] Error 1
05-24

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值