1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# these should match
d = {}
def f1():
for k, _ in d.items():
print(k)
def f2():
for _, v in d.items():
print(v)
def f3():
(k for k, _ in d.items())
(v for _, v in d.items())
def f4():
{k: "" for k, _ in d.items()}
{v: "" for _, v in d.items()}
def f5():
(k for k, v in d.items()) # "v" is unused, warn
(v for k, v in d.items()) # "k" is unused, warn
{k: "" for k, v in d.items()} # "v" is unused, warn
{v: "" for k, v in d.items()} # "k" is unused, warn
def f6():
k=v=0
# don't warn because we can't know if "k" or "v" are unused simply by
# looking at the for block, we need to account for the surrounding context,
# which is not possible currently.
for k, v in d.items():
pass
print(k, v)
# these should not
def f7():
for k, v in d.items():
print(k, v)
class Shelf:
def items(self) -> list[tuple[str, int]]:
return [("bagels", 123)]
def f8():
shelf = Shelf()
for name, count in shelf.items():
pass
def f9():
{k: "" for k, v in d.items() if v}
{v: "" for k, v in d.items() if k}
(k for k, v in d.items() if v)
(v for k, v in d.items() if k)
|