what is the difference in these two isinstances() definitions?












-2















  1. isinstance(list(), type(mylist))


  2. isinstance(mylist, list)



Is there any difference apart from the speed? I can see 2 is faster.










share|improve this question




















  • 4




    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










  • 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






  • 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


















-2















  1. isinstance(list(), type(mylist))


  2. isinstance(mylist, list)



Is there any difference apart from the speed? I can see 2 is faster.










share|improve this question




















  • 4




    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










  • 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






  • 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
















-2












-2








-2








  1. isinstance(list(), type(mylist))


  2. isinstance(mylist, list)



Is there any difference apart from the speed? I can see 2 is faster.










share|improve this question
















  1. isinstance(list(), type(mylist))


  2. isinstance(mylist, list)



Is there any difference apart from the speed? I can see 2 is faster.







python python-3.x isinstance






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 19 '18 at 15:12

























asked Nov 19 '18 at 15:06









user2715898

124110




124110








  • 4




    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










  • 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






  • 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




    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










  • 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






  • 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














2 Answers
2






active

oldest

votes


















3














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





share|improve this answer





















  • 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





















1














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.






share|improve this answer





















    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    3














    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





    share|improve this answer





















    • 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


















    3














    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





    share|improve this answer





















    • 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
















    3












    3








    3






    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





    share|improve this answer












    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






    share|improve this answer












    share|improve this answer



    share|improve this answer










    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




















    • 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















    1














    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.






    share|improve this answer


























      1














      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.






      share|improve this answer
























        1












        1








        1






        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.






        share|improve this answer












        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.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 19 '18 at 15:15









        Aswin Murugesh

        6,51652654




        6,51652654






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            Npm cannot find a required file even through it is in the searched directory

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith