2013-04-05 179 views
1

我有一個Python程序,其中包含了一堆代碼,我基本上導入了一些模塊,初始化了一些變量並調用了一些函數。這裏是它的一部分:Python程序的初始化

import numpy as np 
import scipy as sp 
import scipy.optimize as opt 
import scipy.constants as const 
import random 
import time 

if os.name == 'nt': os.system('cls') 
if os.name == 'posix': os.system('clear') 
rows, columns = os.popen('stty size', 'r').read().split() 

Inclination = math.radians(INCLINATION) 
Period = PERIOD*const.day 

有沒有一種方法,我可以把所有這一切都爲一次單獨的模塊,只是打電話了嗎?我試圖把所有這些都放到一個外部程序中,然後調用它,但是據我所知,一切都完成了,但只在本地,而不是在主代碼上。

這個想法應該能夠在多個程序中使用這個「初始化模塊」。

+1

'從myInitializationModule進口*'應該工作 – jedwards 2013-04-05 17:15:11

+2

注意,在一般情況下,屏蔽你使用的是什麼樣的是將會使你的代碼更加努力的工作。 – 2013-04-05 17:15:44

+0

@Lattyware:這是一個好點 - 100%同意。 – jedwards 2013-04-05 17:16:08

回答

5

您是否嘗試將所有這些都放到其他.py文件中,然後只是from x import *?然後你應該擁有所有這些模塊和常量,不管你從哪個文件中調用。

編輯:如果你擔心多次執行所有這些,不要這樣做。在導入時,Python會檢查一個模塊是否已經加載,然後再次加載該模塊。例如說我們有這些文件:

fileA.py =>從初始導入*
fileB.py =>進口初始化
fileC.py =>進口的fileA,FILEB

當您運行fileC。 py,initializer.py中的代碼只運行一次,即使fileA和fileB都成功加載它,儘管它們以不同的方式執行。

+0

嗨戴夫,不,我剛剛做了一個'import myInitializationModule',認爲它會是一樣的。做到了這一點,並像魅力一樣工作,謝謝! :) – jorgehumberto 2013-04-05 17:29:26

0

你不需要任何特殊的機制。當你導入這個模塊時,python會拋出它並且所有的值都被初始化,你可以使用它。只需導入它,這就是全部。

+3

我認爲他試圖避免進口/初始化的冗餘。至少這是我得到的出*的想法是能夠在多個程序也使用這種「初始化模塊」 * – jedwards 2013-04-05 17:17:18

+0

@ pejot:我想一個簡單的'進口x',沒有工作,不得不做'從x導入*'。 – jorgehumberto 2013-04-05 17:35:38

+0

從x導入* – speedingdeer 2013-04-05 17:36:15