Reputation: 187
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?
Upvotes: 0
Views: 77
Reputation: 350345
In JavaScript typeof f == 'object'
is true when all of the following is not true:
f
is undefined
: there is no equivalent in Pythonf
is a number, bigint or boolean: in Python this is an instance of float
or int
. As bool
is a subclass of int
, it is included.f
is a string: in Python this is an instance of str
f
is a symbol: there is no equivalent in Pythonf
is a function: in Python you can use callable
to detect thisCaveat: 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"
Upvotes: 2