Saya mencari Iterable yang dapat diulang tanpa efek samping. Misalnya, saya ingin membubuhi keterangan di bawah argumen x:

def foo(x: NoSideEffectIterable[int]):
    for i in range(10):
        for xx in x: # x is iterated 10 times here
            print(i*xx)
  1. Iterable tidak cocok karena x diulang lebih dari sekali
  2. Sequence tidak cocok karena urutan x tidak masalah

Bagaimana cara membubuhi keterangan x?

1
Yohei 26 Januari 2020, 12:20

2 jawaban

Jawaban Terbaik

Tidak ada anotasi untuk itu. Ini bukan konsep yang dapat diungkapkan oleh sistem tipe. Iterable adalah taruhan terbaik Anda. Jika Anda ingin sedikit lebih membatasi, Anda dapat menggunakan Collection, tetapi sementara Iterable menyatakan lebih sedikit persyaratan daripada yang Anda inginkan, Collection menyatakan lebih banyak.

1
user2357112 supports Monica 26 Januari 2020, 10:02

Coba dengan Iterator[int]. Iterator dalam Python adalah iterable yang dikonsumsi setelah Anda mengulanginya sekali. Semoga membantu

0
Pietro Marsella 26 Januari 2020, 09:43