簡體   English   中英

如何在python中導入部分模塊?

[英]How to import part of a module in python?

我需要使用python模塊(在某些庫中可用)。 該模塊如下所示:

class A:
  def f1():
  ...

print "Done"
...

我只需要A類的功能。但是,當我導入模塊時,底部的代碼(print和其他)會被執行。 有沒有辦法避免這種情況? 基本上我需要導入一個模塊的一部分:“來自module1 import A”,它應該只導入A.是否可能?

是的,當然:

from module1 import A

是一般語法。 例如:

from datetime import timedelta

應該保護底部的代碼在導入時運行,方法如下:

if __name__ == "__main__":
  # Put code that should only run when the module
  # is used as a stand-alone program, here.
  # It will not run when the module is imported.

如果你只是對print語句感到煩惱,你可以將代碼的輸出重定向到不可見的地方,就像這篇文章的一篇評論中所解釋的那樣: http//coreygoldberg.blogspot.com/2009/05/python-redirect-or-關閉-標准輸出,and.html

sys.stdout = open(os.devnull, 'w')
# now doing the stuff you need
...

# but do not forget to come back!
sys.stdout = sys.__stdout__

文檔: http//docs.python.org/library/sys.html#sys.stdin

但是如果你想要停用文件修改或者耗費時間的代碼,我唯一想到的就是一些骯臟的技巧:將你需要的對象復制到另一個文件中,然后導入它(但我不推薦它!)。

除了@ unwind的回答之外 ,通常的做法是保護模塊中的代碼,只有在模塊直接使用時才能運行:

if __name__ == "__main__":
    <code to only execute if module called directly>

這樣你就可以正常導入模塊了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM