When you run this in Godot:
if not Vector2.ZERO:
print('V0 is false.')
else:
print('V0 is true')
if not Vector2(0, 0):
print('V0,0 is false.')
else:
print('V0,0 is true')
if not Vector2(0, 1):
print('V0,1 is false.')
The output is:
V0 is false.
V0,0 is false.
V0,1 is true
So, Vector2(0, 0)
does actually get coerced to false. That's not unreasonable, after all, it's a 2D zero, but I was surprised. It's the root of a bug in which a function checked for the presence of each argument for an operation with `not`, so it counted a Vector2.ZERO argument as missing.