what is the difference in these two isinstances() definitions?
isinstance(list(), type(mylist))
isinstance(mylist, list)
Is there any difference apart from the speed? I can see 2 is faster.
python python-3.x isinstance
|
show 3 more comments
isinstance(list(), type(mylist))
isinstance(mylist, list)
Is there any difference apart from the speed? I can see 2 is faster.
python python-3.x isinstance
4
how did you definearray
? or do you mean thearray.array
?
– Chris_Rands
Nov 19 '18 at 15:09
Isarray
a type or an instance?
– khelwood
Nov 19 '18 at 15:10
The first one is making a new list and checking if is an instance of the type ofarray
(whatever that is). The second is checking ifarray
is an instance of list. They are not equivalent.
– khelwood
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
1
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20
|
show 3 more comments
isinstance(list(), type(mylist))
isinstance(mylist, list)
Is there any difference apart from the speed? I can see 2 is faster.
python python-3.x isinstance
isinstance(list(), type(mylist))
isinstance(mylist, list)
Is there any difference apart from the speed? I can see 2 is faster.
python python-3.x isinstance
python python-3.x isinstance
edited Nov 19 '18 at 15:12
asked Nov 19 '18 at 15:06
user2715898
124110
124110
4
how did you definearray
? or do you mean thearray.array
?
– Chris_Rands
Nov 19 '18 at 15:09
Isarray
a type or an instance?
– khelwood
Nov 19 '18 at 15:10
The first one is making a new list and checking if is an instance of the type ofarray
(whatever that is). The second is checking ifarray
is an instance of list. They are not equivalent.
– khelwood
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
1
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20
|
show 3 more comments
4
how did you definearray
? or do you mean thearray.array
?
– Chris_Rands
Nov 19 '18 at 15:09
Isarray
a type or an instance?
– khelwood
Nov 19 '18 at 15:10
The first one is making a new list and checking if is an instance of the type ofarray
(whatever that is). The second is checking ifarray
is an instance of list. They are not equivalent.
– khelwood
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
1
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20
4
4
how did you define
array
? or do you mean the array.array
?– Chris_Rands
Nov 19 '18 at 15:09
how did you define
array
? or do you mean the array.array
?– Chris_Rands
Nov 19 '18 at 15:09
Is
array
a type or an instance?– khelwood
Nov 19 '18 at 15:10
Is
array
a type or an instance?– khelwood
Nov 19 '18 at 15:10
The first one is making a new list and checking if is an instance of the type of
array
(whatever that is). The second is checking if array
is an instance of list. They are not equivalent.– khelwood
Nov 19 '18 at 15:12
The first one is making a new list and checking if is an instance of the type of
array
(whatever that is). The second is checking if array
is an instance of list. They are not equivalent.– khelwood
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
1
1
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20
|
show 3 more comments
2 Answers
2
active
oldest
votes
If used correctly, the results will be the same. But you should only use the second version.
There's no need to create an empty object, i.e. list()
, and no reason for an extra function call via type
.
There's also a danger you'll do something like this:
from collections import OrderedDict
array = dict()
res1 = isinstance(OrderedDict(), type(array)) # True
res2 = isinstance(array, OrderedDict) # False
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
add a comment |
The first one is very inefficient, as you are first creating a new list object, and then identifying the type of my_list
and then checking if they both are same.
The second option is how the isinstance
function is supposed to be used.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53377455%2fwhat-is-the-difference-in-these-two-isinstances-definitions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
If used correctly, the results will be the same. But you should only use the second version.
There's no need to create an empty object, i.e. list()
, and no reason for an extra function call via type
.
There's also a danger you'll do something like this:
from collections import OrderedDict
array = dict()
res1 = isinstance(OrderedDict(), type(array)) # True
res2 = isinstance(array, OrderedDict) # False
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
add a comment |
If used correctly, the results will be the same. But you should only use the second version.
There's no need to create an empty object, i.e. list()
, and no reason for an extra function call via type
.
There's also a danger you'll do something like this:
from collections import OrderedDict
array = dict()
res1 = isinstance(OrderedDict(), type(array)) # True
res2 = isinstance(array, OrderedDict) # False
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
add a comment |
If used correctly, the results will be the same. But you should only use the second version.
There's no need to create an empty object, i.e. list()
, and no reason for an extra function call via type
.
There's also a danger you'll do something like this:
from collections import OrderedDict
array = dict()
res1 = isinstance(OrderedDict(), type(array)) # True
res2 = isinstance(array, OrderedDict) # False
If used correctly, the results will be the same. But you should only use the second version.
There's no need to create an empty object, i.e. list()
, and no reason for an extra function call via type
.
There's also a danger you'll do something like this:
from collections import OrderedDict
array = dict()
res1 = isinstance(OrderedDict(), type(array)) # True
res2 = isinstance(array, OrderedDict) # False
answered Nov 19 '18 at 15:17


jpp
92.2k2053103
92.2k2053103
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
add a comment |
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
This is a good point, the results are not always symmetric because of subclasses, of course we don't what they actually want in this case
– Chris_Rands
Nov 19 '18 at 15:20
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
@Chris_Rands, Yup, it's just an illustration of what's more likely to go wrong with the first method.
– jpp
Nov 19 '18 at 15:21
add a comment |
The first one is very inefficient, as you are first creating a new list object, and then identifying the type of my_list
and then checking if they both are same.
The second option is how the isinstance
function is supposed to be used.
add a comment |
The first one is very inefficient, as you are first creating a new list object, and then identifying the type of my_list
and then checking if they both are same.
The second option is how the isinstance
function is supposed to be used.
add a comment |
The first one is very inefficient, as you are first creating a new list object, and then identifying the type of my_list
and then checking if they both are same.
The second option is how the isinstance
function is supposed to be used.
The first one is very inefficient, as you are first creating a new list object, and then identifying the type of my_list
and then checking if they both are same.
The second option is how the isinstance
function is supposed to be used.
answered Nov 19 '18 at 15:15


Aswin Murugesh
6,51652654
6,51652654
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53377455%2fwhat-is-the-difference-in-these-two-isinstances-definitions%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
4
how did you define
array
? or do you mean thearray.array
?– Chris_Rands
Nov 19 '18 at 15:09
Is
array
a type or an instance?– khelwood
Nov 19 '18 at 15:10
The first one is making a new list and checking if is an instance of the type of
array
(whatever that is). The second is checking ifarray
is an instance of list. They are not equivalent.– khelwood
Nov 19 '18 at 15:12
ah it;s just a variable name. I'll edit the question
– user2715898
Nov 19 '18 at 15:12
1
@user2715898, The difference is you can easily use the first one incorrectly, see my example. It's not just about speed.
– jpp
Nov 19 '18 at 15:20