Unlike other methods used in different parts of the function in my program, the methods used in this part of the function is plain white and it says "method name: Any". For example, .isupper()
shows isupper: Any
whereas .lower()
displays a different one.
Asked
Active
Viewed 1,236 times
0

CoreVisional
- 99
- 1
- 6
1 Answers
2
The variable symbol
is not explicitly stated to be of type str
, which isupper()
and islower()
are methods of. In ascii_letters
, I imagine you have explicitly stated str
types as values/elements, which is why vscode properly recognizes ascii_letters[key_position]
to be of type str
and thus why the lower()
method is properly highlighted and described.
To remove the ambiguity, you could introduce type hinting:
def check_text_case(symbol: str, result: list, key_position: int) -> None:
if symbol.isupper():
result.append(ascii_letters[key_position])
elif symbol.islower():
result.append(ascii_letters[key_position].lower())
This way, the types are explicitly stated and the code is properly highlighted and described.

Scene
- 489
- 4
- 16
-
I see, I have one question. In the doc where you linked the "typing', it also uses "-> None", what exactly is the usage here because I'm still confused after reading the doc. – CoreVisional Aug 19 '21 at 09:04
-
1The `-> None` refers to the `return` type of the function. In your case, there is no `return` statement, but the function implicitly returns `None`. Here are some nice articles on the subject: https://realpython.com/lessons/type-hinting/#:~:text=Type%20hinting%20is%20a%20formal,type%20information%20to%20a%20function, https://stackoverflow.com/questions/32557920/what-are-type-hints-in-python-3-5 – Scene Aug 19 '21 at 16:30