To check if o
is an instance of str
or any subclass of str
, use isinstance (this would be the "canonical" way):
if isinstance(o, str):
To check if the type of o
is exactly str
(exclude subclasses):
if type(o) is str:
The following also works, and can be useful in some cases:
if issubclass(type(o), str):
See Built-in Functions in the Python Library Reference for relevant information.
One more note: in this case, if you're using Python 2, you may actually want to use:
if isinstance(o, basestring):
because this will also catch Unicode strings (unicode
is not a subclass of str
; both str
and unicode
are subclasses of basestring
). Note that basestring
no longer exists in Python 3, where there's a strict separation of strings (str
) and binary data (bytes
).
Alternatively, isinstance
accepts a tuple of classes. This will return True
if o
is an instance of any subclass of any of (str, unicode)
:
if isinstance(o, (str, unicode)):
Use the type()
builtin function:
>>> i = 123
>>> type(i)
<type 'int'>
>>> type(i) is int
True
>>> i = 123.456
>>> type(i)
<type 'float'>
>>> type(i) is float
True
To check if a variable is of a given type, use isinstance
:
>>> i = 123
>>> isinstance(i, int)
True
>>> isinstance(i, (float, str, set, dict))
False
Note that Python doesn't have the same types as C/C++, which appears to be your question.
Best Answer
Use the Windows search bar to find "Manage app execution aliases". There should be two aliases for python, unselect them, this will allow the usual python aliases "python" and "python3". See image below.
I think we have this problem when installing python because in a new Windows installation the aliases are in the ON position as in image below. When turned on, Windows puts a empty or fake file named python.exe and python3.exe in the directory named %USERPROFILE%\AppData\Local\Microsoft\WindowsApps. This is the alias.
Then Microsoft put that directory at the top of the list in the "Path" environment variables.
When you enter "python" in cmd, it searches the directories listed in your "Path" environment variables page from top to bottom. So if you installed Python after a new Windows 10 install then get redirected to the Windows Store it's because there are two python.exe's, the alias in the App Execution Alias page, and the real one wherever you installed Python but cmd finds the App execution alias python.exe first because that directory is at the top of the Path.
I think the easiest solution is to just check the python.exe and python3.exe to OFF as I suggested before, which deletes the fake exe's. Based on this Microsoft Devblog https://devblogs.microsoft.com/python/python-in-the-windows-10-may-2019-update/ they stated they created this system partially for new python users specifically kids learning python in school that had trouble installing it. Creating this alias was to helps kids just starting python install it and focus on learning to code. I think Windows probably deletes those aliases if you install Python from the Windows App Store. What we are noticing is that they do not get deleted if you manually install from another source.
(Also the empty/fake python.exe is not really empty it says 0 KB in the screenshot but entering "start ms-windows-store:" in cmd opens the Windows App Store so it probably just has a line with that and a way to direct it to Python page.)
Finally, as Chipjust suggested you can create a new alias for python using something like DOSKEY as explained in this article for example: https://winaero.com/how-to-set-aliases-for-the-command-prompt-in-windows/