我是一名新程序員,並且在將新字典名稱作爲參數傳遞給函數時遇到了問題。
我正在嘗試創建一個函數,它將從網頁中下拉數據,併爲主機名和全行數據的值創建一個字典密鑰。有多個頁面具有主機名作爲關鍵值的共同性,我最終會將它們連接在一起。如何將新字典名稱作爲參數傳遞給Python中的函數?
首先,我創建一個名爲control
的列表,用作我正在搜索的所有主機的密鑰文件。然後我將值webpage
,delimiter
和dictionary name
傳遞給函數。
當這樣做時,似乎字典的名稱沒有被傳遞給函數。
#open key file
f = open("./hosts2", "r")
control = []
for line in f:
line = line.rstrip('\n')
line = line.lower()
m = re.match('(^[\w\d]+)', line)
control.append(m.group())
# Close key file
f.close()
def osinfo(url, delimiter, name=None):
ufile = urllib2.urlopen(url)
ufile.readline()
name = {}
for lines in ufile.readlines():
lines = lines.rstrip("\n")
fields = lines.split(delimiter)
m = re.match(r'(?i)(^[a-z0-9|\.|-]+)', fields[1].lower())
hostname = m.group()
if hostname in control:
name[hostname] = lines
print "The length of osdata inside the function:", len(name)
osdata = {}
osinfo(‘http://blahblah.com/test.scsv’, ';', name='osdata')
print "The length of osdata outside the function", len(osdata)
輸出如下:
$./test.py
The length of osdata inside the function: 11
The length of osdata outside the function: 0
看來這個關鍵字沒有被功能回升。
這是由於範圍?
我不確定它是否僅僅是複製和粘貼代碼,但是你有一大塊代碼需要進一步縮進。在'name = {}'之後,接下來的8行看起來好像縮進得太遠了。 – Matthew
參數不傳遞給函數。它是作爲參數傳遞的對象。參數是在函數定義的括號內定義的標識符 – eyquem