What does '__init__.py' do in Python?

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 พ.ย. 2024

ความคิดเห็น • 90

  • @umka7536
    @umka7536 หลายเดือนก่อน +39

    Thanks for covering the role of __init__.py in the import of a module. Because a lot of video tutorials skip this information.

  • @BohonChina
    @BohonChina หลายเดือนก่อน +123

    you should mention the difference between having _init_.py and not having one in your module directory

    • @luisdominguesforprogramaca3221
      @luisdominguesforprogramaca3221 หลายเดือนก่อน +34

      He explained it's the _init_.py that makes the directory module a package and how to use that file to define the behaviour of the imports.

    • @BohonChina
      @BohonChina หลายเดือนก่อน

      @@luisdominguesforprogramaca3221 NO _init_.py, INSERT path in PYTHONPATH, import module statement after inserting path will behave like a package too.

    • @DhavalAhir10
      @DhavalAhir10 หลายเดือนก่อน +22

      When you have `__init__.py` file in your folder directory, your folder called as "package".
      When you don't have `__init__.py` file in your folder directory, your folder still count as package but now your folder called as "Namespace Package" instead of "package".

    • @creed404yt9
      @creed404yt9 หลายเดือนก่อน +6

      Rewatch the video

    • @Omsip123
      @Omsip123 หลายเดือนก่อน +5

      How about explaining the difference in your comment?

  • @danialothman
    @danialothman หลายเดือนก่อน +8

    that one class I ignored, it was this one in 2021. i got it now 😂 thanks for this!

  • @arkie87
    @arkie87 หลายเดือนก่อน +13

    This is a great start on this topic. There arent actually a lot of youtube videos about this topic, and its hard to find information. Would appreciate a follow up that went more into detail, if you can. For instance: what exactly happens when you import things in the __init__.py file. What sort of start up logic do you need to do. What is the appropriate use of this file etc....

  • @dragweb7725
    @dragweb7725 หลายเดือนก่อน +52

    Thanks for this basic tutorial about imports, could it be possible to make a video about imports between modules in the same package ? cause this is always a pain in the a** to know how to do these correctly and everyone seems to use different tricks when searching for solutions on the net. That would be a really helpful video

    • @jokmenen_
      @jokmenen_ หลายเดือนก่อน +1

      Same. Had to use sys.path to import packages from another folder yesterday. My brain exploded

    • @ego-lay_atman-bay
      @ego-lay_atman-bay หลายเดือนก่อน +2

      I don't understand how it's difficult. If you have an __init__?py file in each folder, they become submodules, which you can import the same way as a file inside a package. If you need to import from one submodule to another, you use two dots instead of one.

    • @dragweb7725
      @dragweb7725 หลายเดือนก่อน +4

      @@ego-lay_atman-bay I'm not talking about imports outside a package (involving __init__.py), but more about imports between modules in the same package (same folder), as relative imports easily gives you a "attempted relative import but no parent package found" even with __init__.py everywhere, and direct import like "from module import func" without a dot it easily gives you a "no module named 'module' found"

    • @ego-lay_atman-bay
      @ego-lay_atman-bay หลายเดือนก่อน +1

      @@dragweb7725 and what is the use case for such a project with that kind of folder structure?

  • @petsandpaws8906
    @petsandpaws8906 หลายเดือนก่อน +2

    Crystal clear. Thank you for explaining it very simpel!

  • @mukisajohnmary
    @mukisajohnmary หลายเดือนก่อน +2

    Wonderful explanation. Thanks 🙏

  • @purplemonkeydishwasher5269
    @purplemonkeydishwasher5269 9 วันที่ผ่านมา

    This is amazing. Im completely rebuilding an app Im working on based on this!!!

  • @onlysin530
    @onlysin530 22 วันที่ผ่านมา

    thank you very much! this also explains why some packages won't work when you just use import *... the __init__ flie in the package didn't explicitly declare the file that was needed! It is always a safer way to explicitly declaring the packages that one need then

  • @prach-poom
    @prach-poom 24 วันที่ผ่านมา +1

    You're awesome.
    This one has a lot of great tips

  • @laitei-e40
    @laitei-e40 หลายเดือนก่อน +2

    Great! Loved it, my hero 🎉

  • @thefanboy3285
    @thefanboy3285 28 วันที่ผ่านมา +1

    Thanks. Mind refresher, Life saver.

  • @FighterAceee94
    @FighterAceee94 หลายเดือนก่อน +2

    It would have been interesting to see the behavior of __init__.py when importing the same package from multiple different modules within your project. If I'm not mistaken, the __init__.py will be called only once (the first time any import statement is used).

  • @EquiliMario
    @EquiliMario 22 วันที่ผ่านมา

    The __all__ dunder method is something i didnt know yet. Neat

  • @nobody2937
    @nobody2937 หลายเดือนก่อน

    Thank you indeed... Extremely clear, concise... Thank you ...

  • @mikecanaday4888
    @mikecanaday4888 หลายเดือนก่อน

    Good job! Pycharm was a nice touch since that’s the environment that many use.

  • @average_paniker
    @average_paniker หลายเดือนก่อน +1

    Clearly explained. Thank you!

  • @awetinoawets9290
    @awetinoawets9290 หลายเดือนก่อน +4

    Very useful 🙏🙏🙏

  • @michaelangellotti5741
    @michaelangellotti5741 หลายเดือนก่อน +2

    Quick and accurate. Thanks.

  • @ml_with_pranay
    @ml_with_pranay หลายเดือนก่อน

    I enjoy your videos a lot! Keep posting😊

  • @tejasmarvel2023
    @tejasmarvel2023 22 วันที่ผ่านมา

    very clear video. thanks

  • @AdrianCortes-b7f
    @AdrianCortes-b7f หลายเดือนก่อน

    Veryw ell explained, Thank you!

  • @HiltonFernandes
    @HiltonFernandes หลายเดือนก่อน

    Great video. Congrats !

  • @davidlu1003
    @davidlu1003 หลายเดือนก่อน

    I love you, great videos, and please keep going.😁😁😁

  • @michaelrstudley
    @michaelrstudley หลายเดือนก่อน

    Fantastic video. How do you feel about placing all imports needed for the files inside?
    For example...
    From enum import Enum

  • @goobiie
    @goobiie หลายเดือนก่อน

    Very useful video

  • @elastvd7503
    @elastvd7503 19 วันที่ผ่านมา

    Super , thanks

  • @giocic94
    @giocic94 หลายเดือนก่อน +5

    I use "__init__.py" also for importing all the libraries that I will import in the submodules. And then, in the submodules, I use "from . import ". I don't know if it's useful, I wanted to have organized imports.. Does it make sense?

    • @timbrap4693
      @timbrap4693 24 วันที่ผ่านมา

      I do that too!

  • @_Garm_
    @_Garm_ หลายเดือนก่อน

    aveasome thank you, would like to learn more about it :D

  • @Muhammad-zu6lk
    @Muhammad-zu6lk หลายเดือนก่อน

    You'r plane went well!

  • @odevperovano
    @odevperovano หลายเดือนก่อน

    Excellent, thankyou!

  • @Pawlo370
    @Pawlo370 หลายเดือนก่อน

    very good tutorial 👍

  • @basilchinedu144
    @basilchinedu144 หลายเดือนก่อน

    Thanks a lot, very helpful.

  • @BohonChina
    @BohonChina หลายเดือนก่อน +2

    you can compare with or wihout __init__.py in two scenarios
    1. HAVING _init_.py, No INSERT of path in sys
    2. NO _init_.py, INSERT path in PYTHONPATH, import module statement after inserting path
    import sys
    sys.path.append('/python/NoInitModule')
    from dir import module statement

  • @7th_dwarf542
    @7th_dwarf542 หลายเดือนก่อน

    brilliant! 👏

  • @benmatt8940
    @benmatt8940 หลายเดือนก่อน

    Utterly usefull

  • @AlWardani-k2h
    @AlWardani-k2h หลายเดือนก่อน

    ❤❤❤❤❤ awesome

  • @banjijohn
    @banjijohn 29 วันที่ผ่านมา

    ❤ thank you 🎉

  • @PennyEvolus
    @PennyEvolus หลายเดือนก่อน

    i didnt even know i needed to know this

  • @antoniov845
    @antoniov845 หลายเดือนก่อน +16

    Star import is a really poor practice

    • @michaelcummings7246
      @michaelcummings7246 หลายเดือนก่อน +3

      If you are basically using everything in a package already it makes sense to use it. If you only need a couple then it might make sense not to so naming conflicts are less likely but personally once my import line gets past 3-4 things I switch.

    • @antoniov845
      @antoniov845 หลายเดือนก่อน

      @@michaelcummings7246 there are many issues with star imports. Honestly when I just discovered it I started to use it all over the place since it’s def easier
      But after a few days I changed all that 😀 it makes refactoring etc much harder and imagine solving circular import error with this approach 😀

  • @sean-uw6op
    @sean-uw6op หลายเดือนก่อน +1

    Could you please make a video on python garbage collection

  • @murphygreen8484
    @murphygreen8484 หลายเดือนก่อน +3

    I thought the __init__.py was no longer needed? I've never used it. Though I also have issues with pytest when my test files are in a sub directory, so that could be part of it

    • @eduferreyraok
      @eduferreyraok หลายเดือนก่อน +1

      I think the interpreter has added some layer of inference to this… but it can still be buggy sometimes. I.e: i dont get import errors when trying mysql in django, but when including the module at init then the hug goes away

    • @DhavalAhir10
      @DhavalAhir10 หลายเดือนก่อน

      When you have `__init__.py` file in your folder directory, your folder called as "package".
      When you don't have `__init__.py` file in your folder directory, your folder still count as package but now your folder called as "Namespace Package" instead of "package".

    • @arungumpina4644
      @arungumpina4644 หลายเดือนก่อน

      @murphygreen8484 could you please suggest if know any tutorials for pytest?

  • @frazer26
    @frazer26 หลายเดือนก่อน

    How would you make the connections module accessible with different projects without copying it over to every new project?

  • @makersbee
    @makersbee 20 วันที่ผ่านมา

    Share your vscode setup

  • @HoSza1
    @HoSza1 หลายเดือนก่อน +2

    so a package is a container that contains an __init__ in it! 😂

  • @arungumpina4644
    @arungumpina4644 หลายเดือนก่อน

    Hey @Indently, If I have multiple modules (so many modules) in packages, & our init script has this __all__ dunder method,
    do I need to give each & every module name in __all__ = ['wifi', 'mobile', 'bluetooth', 'module4', 'module5'..... ]
    Is there a better way for us to include all modules in package initalizer? in order for * recognizes all modules?

  • @pratikkshirsagar7152
    @pratikkshirsagar7152 หลายเดือนก่อน

    Thanks

  • @mohammadjawad4806
    @mohammadjawad4806 18 วันที่ผ่านมา

    I guess it would be a poor practice or even dangerous to execute a code from __init__ file, right?

  • @oneforall4049
    @oneforall4049 หลายเดือนก่อน +1

    Which code editor you use

    • @null-0x
      @null-0x หลายเดือนก่อน

      PyCharm

  • @apollowilsons
    @apollowilsons หลายเดือนก่อน

    Can you do blender python? plz

  • @drakouzdrowiciel9237
    @drakouzdrowiciel9237 13 วันที่ผ่านมา

    thx

  • @sarundayo
    @sarundayo หลายเดือนก่อน

    Learning python on the go apps?

  • @Mark_Point
    @Mark_Point หลายเดือนก่อน

    Do the functions in the new package still need, the if name == main line?

    • @eduferreyraok
      @eduferreyraok หลายเดือนก่อน

      If you want to execute code exclusively at the file, then yes… it applies for all files/imports/packages/modules

  • @atmadeeparya2454
    @atmadeeparya2454 29 วันที่ผ่านมา

    what's the code editor

  • @m00n-Child96
    @m00n-Child96 หลายเดือนก่อน

    🙏

  • @realortigotze
    @realortigotze หลายเดือนก่อน

    Does anybody knows what font he's using?

  • @mlocverm
    @mlocverm หลายเดือนก่อน +1

    👋👋👋

  • @seasn5553
    @seasn5553 หลายเดือนก่อน +1

    Dude holy I legit was thinking about this an hour ago LOL

  • @LucaCappelletta
    @LucaCappelletta หลายเดือนก่อน +4

    While learning a bit more on how star import works is useful and interesting, star import is really a bad practice. I hope this video doesn't encourage anyone to use it.

    • @ego-lay_atman-bay
      @ego-lay_atman-bay หลายเดือนก่อน +1

      Sometimes it's useful, such as importing c_types. You're most likely going to just import everything instead of using ctypes.c_uint32(). However, they still are not very good most of the time.

  • @majinmarkus968
    @majinmarkus968 หลายเดือนก่อน

    its loading some libraries. Innit? :D

  • @miguelvasquez9849
    @miguelvasquez9849 หลายเดือนก่อน

    i read the __init__ file is no longer necesary

    • @eduferreyraok
      @eduferreyraok หลายเดือนก่อน +2

      Not its infered, but i would still recommend it since it can be buggy sometimes

    • @DhavalAhir10
      @DhavalAhir10 หลายเดือนก่อน

      When you have `__init__.py` file in your folder directory, your folder called as "package".
      When you don't have `__init__.py` file in your folder directory, your folder still count as package but now your folder called as "Namespace Package" instead of "package".

  • @SeigeGoat
    @SeigeGoat 24 วันที่ผ่านมา

    When did python became British?

    • @Indently
      @Indently  24 วันที่ผ่านมา +1

      Since it was founded it was based on a British TV series

  • @rhettsmedia
    @rhettsmedia หลายเดือนก่อน

    For us blind guys you need to speak__or thunder

    • @rhettsmedia
      @rhettsmedia หลายเดือนก่อน

      Also, what is this whole thing is a variable is it a list? What is it is a dictionary

  • @divyakumar8147
    @divyakumar8147 19 วันที่ผ่านมา

    thanks

  • @johneric2720
    @johneric2720 19 วันที่ผ่านมา

    Thanks