怎么搞出好几种语法
liike this在Python中, range 函数有两种主要用法。这个函数主要用于生成一个不可变的整数序列,通常用于for循环中。以下是两种用法的详解:
1. range(stop):当只提供一个参数时,将生成一个从0(包含)开始到stop(不包含)的整数序列。例如:
for i in range(5):
print(i)
上面的代码将输出:
0
1
2
3
4
2. range(start, stop[, step]):当提供两个或三个参数时,将生成一个从start(包含)开始到stop(不包含)的整数序列,其中每个数字间隔为step。step参数是可选的,默认值为1。例如:
for i in range(2, 10, 2):
print(i)
上面的代码将输出:
2
4
6
8
请注意, range 对象本身不是一个列表,而是一个可迭代对象。如果你需要将其转换为列表,可以使用 list() 函数:
numbers = list(range(5))
print(numbers)
这将输出:
只有第一个该说太不灵活
只有第二个就成了太不简洁
问就是哲学 isdkz 发表于 2023-4-28 15:26
在Python中, range 函数有两种主要用法。这个函数主要用于生成一个不可变的整数序列,通常用于for循环中。 ...
我是说,怎么声明,这个函数有好几种语法
不然只能用可选参数 dolly_yos2 发表于 2023-4-28 15:27
只有第一个该说太不灵活
只有第二个就成了太不简洁
问就是哲学
{:5_94:} Threebody1 发表于 2023-4-28 15:38
生成类型信息:@overload
实现:手动实现
大概是这样 Threebody1 发表于 2023-4-28 15:38
我是说,怎么声明,这个函数有好几种语法
不然只能用可选参数
不太懂你意思 isdkz 发表于 2023-4-28 15:45
不太懂你意思
emm dolly_yos2 发表于 2023-4-28 15:44
生成类型信息:@overload
实现:手动实现
大概是这样
我的 Python 水平一般,看看这个有没有用吧
from typing import overload
class custom_range:
@overload
def __init__(self, stop: int) -> None:
...
@overload
def __init__(self, start: int, stop: int, step: int = 1) -> None:
...
def __init__(self, *args) -> None:
if len(args) == 0 or len(args) > 3:
raise SyntaxError()
self._start = 0
self._stop = 0
self._step = 1
if len(args) == 1:
self._stop = args
else:
self._start = args
self._stop = args
if len(args) == 3:
self._step = args
def __iter__(self):
self._current = self._start
return self
def __next__(self) -> int:
if self._current == self._stop:
raise StopIteration()
value = self._current
self._current += self._step
return value
for i in custom_range(12):
print(i, end=' ')
print()
for i in custom_range(12, 24):
print(i, end=' ')
print()
for i in custom_range(12, 24, 3):
print(i, end=' ')
print() dolly_yos2 发表于 2023-4-28 15:54
我的 Python 水平一般,看看这个有没有用吧
Threebody1 发表于 2023-4-28 16:11
然而这是我看到的标准库的 stub 文件里 range 的写法,在 Pylance 是能正常生成提示的
论断:鉴定为 IDLE 不行 dolly_yos2 发表于 2023-4-28 16:16
然而这是我看到的标准库的 stub 文件里 range 的写法,在 Pylance 是能正常生成提示的
论断:鉴定为 IDL ...
pygame.Rect也有提示
页:
[1]