在Python
中,有一个语法你可能之前都没见过,或者见过但不知道什么意思,他就是...
(省略号的三个点),在这里先给大家看几个例子:
-
下面代码中函数中的
...
代表什么意思?def hello(): ...
-
下面代码中类型定义中的
...
代表什么意思?Tuple[int,...]
-
下面代码中下标取值中的
...
代表什么意思?n = np.arange(8).reshape(2, 2, 2) n[1,...,1]
注意:以上代码都是正确的,没有任何语法错误。 那你知道...
在每个例子中分别代表什么意思吗,如果不知道,可以接着往下看啦。
...
介绍:
实际上,...
是Python
中的一个内置常量,他有一个正式的名字叫做——Ellipsis
,翻译成中文的意思就是“省略号”。
这个常量是Python
六大内置常量之一(其余几个常量是None
、False
、True
、NotImplemented
、__debug__
),他的数据类型是ellipsis
。就相当于False
这个常量的数据类型是bool
一样。
下面我们再在python
中做了以下尝试,能帮助你更好的理解...
:
用途介绍
1. 函数中的...
:
我们的第一个例子,在函数中写上...
def hello():
...
是什么意思呢?其实在函数中写...
没有任何特殊意义,就是当做一个常量被放到函数中是一样的,你可以把...
替换为None
,作用是一样的。但是...
因为是省略号的意思,所以一般我们看到函数中...
的时候,会自然而然想到这是一个还没有写完的函数,所以在理解起来会把他等同于pass
。总结一下:
- 真实的意思就是一个常量被放到函数中。
- 语义上的理解就是一个还没写完的函数,等同于
pass
。
2. Type Hint
中的...
:
在Python3.5
后,引入了Type Hint
语法,也就是类型提示,在定义函数参数,函数返回值的时候加上类型提示,方便在调用的时候不会报错。比如:
def hello(word: str) -> str:
return "hello %s"%word
以上参数和返回值就都指定了要返回字符串类型。
再来看一个小需求。 比如我们现在有一个函数的参数是Tuple
类型,然后这个Tuple
中的元素必须为(int,str)
类型,那么可以写成一下:
def fun(mytuple: Tuple[int,str]):
for x in mytuple:
print(x)
再来看一个和...
有关的小需求,假设我们的函数参数还是Tuple
类型,但是元组中的元素必须都为int
类型,并且元组中个数是不固定的,那么可以使用以下代码来实现:
def fun(mytuple: Tuple[int,...]):
for x in mytuple:
print(x)
3. 切片操作:
假设现在我们有一个有一个np.array
数组对象,然后是一个(2,2)
的数组,这时候可以通过...
来代表所有的(有点类似于:
)进行切片。代码如下:
n = np.arange(4).reshape(2, 2)
n[1,...]
以上的n
对象是:
array([[0, 1],
[2, 3]])
然后我们用[1,...]
来进行切片后,得到的是:
array([2, 3])
所以此时...
可以等价为:
。
4. 表示无限循环:
加入我们现在有一个列表a=[1,2,3]
,然后我们执行代码a.append(a)
,那么再来打印a
的时候,a
的值为:
a = [1,2,3]
a.append(a)
print(a)
>> [1, 2, 3, [...]]
因为a
中又添加了自己a
,所以是一个无限循环了。此时用...
来表示,再合适不过了。
以上就是...
的用法,觉得有用的点个关注呗。你还发现有哪些很少用,但必须要掌握的小技巧,欢迎在评论区留言哦~