2016-01-29 70 views
1

我寫了這段代碼,我希望能夠使用我在函數中創建的字典作爲另一個函數的參數,但是我似乎無法將它打印在它自己的上面,或者將它用作參數'名稱未定義'。 如何創建相同的輸出(包含詞典作爲值的詞典列表),但也能夠使用該函數以外的詞典?爲什麼我不能打印返回值?

def get_name(string_input): 
    l = [line.split('is connected to') for i, line in enumerate(string_input.split('.')) if i % 2 == 0] 
    names = {name[0]:{} for name in l} 
    return names 

print get_name(example_input) 
print names 
+0

接受一個答案,如果你發現它有用。 – k4ppa

回答

3

您必須將返回的值

names = get_name(example_input) 
print names 

變量names函數內部使用外是本地的,所以不可見。

+0

或者只是'print get_name(example_input)'。 – Evert

0

你搞砸了python的變量範圍。

變量總是有一個有效的範圍。在函數內部聲明的局部變量只在該函數內有效。

在這個例子中,a被定義在外部。在myFunc()裏面還有一個變量,它沒有引用外部的變量。這意味着在您的計算機內存中(外部)具有與(在myFunc內部)不同的內存部分。在python有關變量的作用域

a = "A String" 
def myFunc(str): 
    a = str 
    return a 

print myFunc("Hello World!") // Hello World! 
print a // A String 

多一點點信息:

Short Description of the Scoping Rules?