[英]How to access content of declared Variable in python in my POSTGRES sql query
[英]Python: How to access variable declared in parent module
使用Python文檔中的結構:
sound/
__init__.py
effects/
__init__.py
echo.py
surround.py
reverse.py
假設我想import sound.effects
並獲取可用效果列表。 我可以通過聲明sound.effects
的模塊級變量然后在導入每個.py文件時附加到它來實現此目的。 所以聲音/效果/ __ init__.py可能如下所示:
effectList = []
import echo
import surround # Could write code to import *.py instead
...
從我的主要代碼,我現在可以訪問sound.effects.effectList
得到的效果的列表,但我怎么訪問effectList
從echo.py內做實際追加? 我被困在試圖訪問變量:
# None of these work :-(
# from . import self
# from .. import effects
# import sound.effects
sound.effect.effectList.append({'name': 'echo'})
人們在這種情況下通常做的是在模塊中創建一個common.py文件。
sound/
__init__.py
effect/
__init__.py
common.py
echo.py
surround.py
reverse.py
然后將代碼從__init__.py
移動到common.py
:
effectList = []
import echo
import surround # Could write code to import *.py instead
...
在__init__.py
里面你有這個:
from common import *
所以現在在echo.py
你有這個:
import common
common.effectList.append({'name': 'echo'})
任何導入聲音的東西都會像這樣使用它
import sound.effect
for effect_name,effect in sound.effect.effectlist.items():
#....
我自己剛開始使用它,但我相信這是python社區的常見做法。
我認為你應該將“ effectList
available”留給effects
包中的__init__.py
,而不是讓所有模塊自動填充effectList
。 我能想到的幾個原因。
effectList
之外)。 __init__.py
中實現了一個import *.py
類的東西會更好,它會在當前目錄中加載所有內容並使其可用。 在__init__.py
有類似的東西。
import os, glob
effectslist = []
for i in glob.glob("*.py"):
if i == "__init__.py":
next
print "Attempting to import %s"%i
try:
mod = __import__(os.path.splitext(i)[0])
effectslist.append(mod)
except ImportError,m:
print "Error while importing %s - %s"%(i,m)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.