我讀了關於pydocs中的import語句。它說它分兩步執行。 (1)找到一個模塊,並在必要時進行初始化; (2)在本地命名空間(發生導入語句的範圍)中定義一個或多個名稱。第一種形式(不含)爲列表中的每個標識符重複這些步驟。具有from的表單執行步驟(1)一次,然後重複執行步驟(2)。如何在python中執行import語句?
我理解了它的一些部分,但它對我來說還是不完全清楚。我主要對初始化步驟感到困惑,最後它說重複一些步驟。我理解的唯一事情是,如果我們使用say例如:
import sys
中,如果我們使用這個模塊中我們的腳本的功能,我們需要給他們打電話使用sys.fun_name()這種情況下
。由於這些功能在本地無法使用這個導入語句提供。 但是,當我們使用
from sys import argv
我們可以簡單地使用argv的功能,因爲它使得可用的本地的出srcipt。
有人可以請解釋我的工作,並讓我知道我的理解是正確與否。
即使我試圖導入我的腳本到另一個腳本之一,它給了一些奇怪的結果,我知道有些事情要與import語句的第一步,(initiallization)
##### ex17.py #####
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" %(arg1, arg2)
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" %(arg1, arg2)
def print_one(arg1):
print "arg1: %r" %arg1
def print_none():
print "I got nothing."
print_two("Gaurav","Pareek")
print_two_again("Gaurav","Pareek")
print_one("First!")
print_none()
####### ex18.py ######
import ex17
ex17.print_none()
的輸出,我在執行ex18.py時得到如下
arg1: 'Gaurav', arg2: 'Pareek'
arg1: 'Gaurav', arg2: 'Pareek'
arg1: 'First!'
I got nothing.
I got nothing.
爲什麼它是這樣的。它應該只打印我沒有得到一次。
__main__將只爲打印一次。但我不認爲在導入sys的情況下,兩個步驟將被執行一次。我的理解是,當你說import sys,os然後步驟1將被執行兩個模塊sys和os。然後重複步驟2,以獲得sys和os模塊中可用的所有功能。 –
但是從sys導入argv,stdout將只執行一次步驟1,而對於這兩個函數只有argv和stdout會重複執行步驟2。讓我知道我是否正確或錯誤。 –
對於'import sys,os',兩個步驟將執行兩次(從文檔:「對列表中的每個標識符重複這些步驟」)。在這個特定的例子中,第2步只將sys和os添加到本地命名空間,而不是所有的代碼。這就是爲什麼我們需要以「sys.argv」或「or.path.join」等方式訪問代碼(注意:按照[PEP-8](http:// legacy.python.org/dev/peps/pep-0008/#imports)) – naiquevin