What is the most pythonic way to import modules in python

前端 未结 4 2027
囚心锁ツ
囚心锁ツ 2020-12-03 15:26

Can anyone suggest me what is the most pythonic way to import modules in python? Let me explain - i have read a lot of python code and found several different ways of how t

相关标签:
4条回答
  • 2020-12-03 15:32

    Do not use from module import *. This will pollute the namespace and is highly frowned upon. However, you can import specific things using from; from module import something. This keeps the namespace clean. On larger projects if you use a wildcard you could be importing 2 foo or 2 bar into the same namespace.

    PEP 8 says to have imports on separate lines. For instance:

    import os
    import sys
    import yourmodule
    from yourmodule import specific_stuff
    

    One thing I do is alphabetize my imports into two groups. One is std/third party and the second is internal modules.

    0 讨论(0)
  • 2020-12-03 15:37

    People have already commented on the major style issues (at the top of the script, etc), so I'll skip that.

    For my imports, I usually have them ordered alphabetically by module name (regardless of whether it's 'import' or 'from ... import ...'. I split it into groups of: standard lib; third party modules (from pypi or other); internal modules.

    import os
    import system
    
    import twisted
    import zope
    
    import mymodule_1
    import mymodule_2
    
    0 讨论(0)
  • 2020-12-03 15:41

    It really doesn't matter, so long as you don't from ... import *. The rest is all taste and getting around cyclic import issues. PEP 8 states that you should import at the top of the script, but even that isn't set in stone.

    0 讨论(0)
  • 2020-12-03 15:43

    Python's "import" loads a Python module into its own namespace, so that you have to add the module name followed by a dot in front of references to any names from the imported module

    import animals
    animals.Elephant()
    

    "from" loads a Python module into the current namespace, so that you can refer to it without the need to mention the module name again

    from animals import Elephant
    Elephant()
    

    or

    from animals import *
    Elephant()
    

    using from is good, (but using a wildcard import is discouraging). but if you have a big scaled project, importing from diffrent modules may cause naming confilicts. Like importing Elephant() function from two diffrent modules will cause problem (like using wildcard imports with *)

    So, if you have a large scaled project where you import many diffrent things from other modules, it is better to use import and using imported things with module_name.your_class_or_function. Otherwise, use from notation...

    0 讨论(0)
提交回复
热议问题