Very simple question, but I can't find the answer to it. My IDE vs code (pylance) give me the warning/hint for a
being possibly unbound. Why is this? How do I fix it?
def f():
for i in range(4):
a = 1
print(a)
return a
Very simple question, but I can't find the answer to it. My IDE vs code (pylance) give me the warning/hint for a
being possibly unbound. Why is this? How do I fix it?
def f():
for i in range(4):
a = 1
print(a)
return a
Because range(4)
might be something empty (if you overwrite the built-in range
), in which case the loop body will never run and a
will not get assigned. Which is a problem when it's supposed to get returned.
Maybe you can tell your IDE to ignore this and not show the warning. Or assign some meaningful default to a
before the loop.
None
before the loop, you can assert is not None
afterwards to get the inferred type from int | None
back to int
and still catch errors early where the loop indeed didn't execute (instead of returning the None
default value). –
Shore © 2022 - 2024 — McMap. All rights reserved.
range
. – Diphthongizeenumerate(4)
? That's not going to work. The warning means that you should take into account that afor
loop can run 0 times anda
would be undefined. – Mccullyrange
– Cyanohydrin