在Python腳本中,我想控制從子函數將模塊導入main()。這可能嗎?怎麼樣?如何從子函數將模塊導入main()?
爲什麼:我有一個處理命令行參數的子函數(使用argparse)並希望根據用戶輸入導入模塊。具體來說,我想讓用戶指定matplotlib的後端,它必須在導入matplotlib.pylab之前設置。但是,我認爲這個問題有更廣泛的用途。
下面的代碼片段:
def main():
args = handleCommandLine();
fig, ax = plt.subplots(1) # ERROR: plt not defined
# Snip ...
def handleCommandLine():
p = argparse.ArgumentParser()
p.add_argument('--backend', '-b', default=None, help='Specify plotting backend')
args = p.parse_args()
if args.backend != None:
matplotlib.use(args.backend) #Must occur before importing pyplot
import matplotlib.pyplot as plt #Must occur after setting backend, if desired
return args
爲什麼你不能將它導入到整個文件? – Daenyth 2012-02-28 22:22:31
@Daenyth:Matplotlib需要在從matplotlib.pyplot導入繪圖函數之前設置後端,因此它必須在代碼 – 2012-02-29 06:53:26