【问题标题】:Difference in ways of importing modules导入模块的方式不同
【发布时间】:2014-04-21 13:05:46
【问题描述】:

如果我有一个名为FunctionLibrary 的模块,那么如果我使用import FunctionLibraryfrom FunctionLibrary import * 导入,在用法上有什么区别?

FunctionLibrary 内部可能有一个函数列表,或者可能是一个用方法和变量定义的类,任何东西。

请提出建议。

【问题讨论】:

  • 第一个是正确的,第二个是你永远不应该想到做的可怕的事情。

标签: python module python-import


【解决方案1】:

调用导入函数的方式不同。 我假设你有函数foo()bar()

比较一下:

import FunctionLibrary
FunctionLibrary.foo()
FunctionLibrary.bar()

还有这个:

from FunctionLibrary import *
foo()
bar()

你看到区别了吗?第一个需要模块的名称来调用函数,而后一个允许您在没有任何前缀的情况下调用函数。

但这两种方式都不推荐。你应该使用

from FunctionLibrary import foo, bar as fl_bar
foo()
fl_bar()

最后一种方式允许您编写别名来调用 python 函数。如果您导入的模块具有名称相同的函数(或其他内容),您将需要它。

你也可以给你的图书馆起别名

from FunctionLibrary fl import bar as b
fl.b() # calls FunctionLibrary.bar()

【讨论】:

    【解决方案2】:

    没有区别,除了以下几点:

    对于import FunctionLibrary,您的代码必须为:

    FunctionLibrary.method1()
    FunctionLibrary.method2()
    

    优势:通过大量导入或代码,您可以轻松管理类所属的方法,特别是如果您的导入脚本中的方法名称与您的导入脚本相同。

    对于from FunctionLibrary import *,您的代码必须为:

    method1()
    method2()
    

    优势:本质上避免冗长。

    建议

    代替第二种方法,您通常应该使用以下内容:

    import FunctionLibrary as flib
    

    那么你可以这样做:

    flib.method1()
    flib.method2()
    

    另外,如果您要使用特定方法,请执行以下操作:

    from FunctionLibrary import method1, method2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多