I am working on converting some JavaScript code into Python.
There is an if condition in the JavaScript that looks something like:
if (typeof f === 'object') and then a series of actions are taken if this condition evaluates to true.
In this case f would be something like:
f = { 'fields': ["user_id", "date_started", "date_ended"] }
In this case f is a dict, but it might not always be the case.
I know that in JavaScript nearly everything is considered an object.
What would be the equivalent constraint to object in Python?
>Solution :
In JavaScript typeof f == 'object' is true when all of the following is not true:
fisundefined: there is no equivalent in Pythonfis a boolean, number or bigint: in Python this is an instance ofintoffloat. Asboolis a subclass ofint, it is included.fis a string: in Python this is an instance ofstrfis symbol: there is no equivalent in Pythonfis a function: in Python you can usecallableto detect this
Caveat: typeof null == 'object' is true, so in Python None should pass the equivalent test.
So this brings us to the following test in Python:
if not (callable(f) or isinstance(f, (int, float, str))):
# it is an "object"