本文共 1852 字,大约阅读时间需要 6 分钟。
在Python编程中,...、→和/这三个符号虽然看起来不同,但在特定场景下都有独特的用途。以下从实际案例出发,深入解析这三种符号的作用及其适用场景。
...在Python中是一个占位符,常用来表示代码逻辑尚未完成或不需要具体处理某些情况。例如:
if flag: print(flag)else: ...
...比pass更具有代表性,写起来也更直观,特别是当你想在代码中留下待完成的位置时。
...也可以作为一个默认值,尤其是在函数参数中。当你想区分传入None和传入实际值时,...可以起到区分作用。例如:
def testThreeDot(flag=...): if flag: print(flag) else: ...
执行结果:
def testThreeDot(flag=...): if flag: print(flag) else: ...
输出结果:
ellipsis
...是一个对象,可以通过type(...)来确认其类型。例如:
type(...)
输出结果:
ellipsis
→在Python中用于标注参数和返回值的建议类型,类似于JSDoc中的@param和@return。例如:
# 冒号后边的int是建议传入的类型,重点是建议,所以你不传入这种类型也行,这是学习强类型语言,为了提高编译速度# 箭头后边是建议返回的类型,...相当于pass,感觉可能这样写起来更方便(pass的写四个字母而...只需要点三下)def testArrow(flag:int) -> None: ...
执行结果:
def testArrow(flag:int) -> None: ...
在Python中,/默认不是路径分隔符,但在PosixPath类型的对象上,/可以作为路径分隔符。例如:
from pathlib import PathFILE = Path(__file__).resolve()ROOT = FILE.parents[0]print(ROOT)print(type(ROOT))def test(default=ROOT / 'test'): print(default) def test2(default='aa'/'test'): print(default)test2()
执行结果:
/Users/jjw/Desktop/后端项目/yolov5.6/Users/jjw/Desktop/后端项目/yolov5.6/testTraceback (most recent call last): File "/Users/jjw/Desktop/后端项目/yolov5.6/my_test.py", line 16, in def test2(default='aa'/'test'):TypeError: unsupported operand type(s) for /: 'str' and 'str'
从结果可以看出,单纯的/不能单独使用,只有当和PosixPath类型的对象结合使用时才可以作为路径分隔符使用。
在某些情况下,你可以重写__truediv__魔法方法,使得对象支持除法运算。例如:
class MyTest: def __init__(self, args): print('args:\t', args) self.args = args def __truediv__(self, other): print('other:\t', other) return self.args+'/'+otherprint(MyTest('jjw')/'1.txt') 执行结果:
args: jjwother: 1.txtjjw/1.txt
从上边的执行结果可以看出,通过重写魔法方法__truediv__,你可以定义自定义的除法运算符。
转载地址:http://lfofk.baihongyu.com/