2017-09-07 153 views
0

我的場景就像 我有一個腳本,並且我有另一個函數,它將在後臺的無限循環中運行。在這個背景函數中,我正在修改一個變量。 我想主要的功能來獲得相同的變量的更新值..從另一個文件中的函數全局修改變量

file name: kkk.py 
from junk import * 
a={1:2,3:4} 
test(a) 
print a ---> I want this to get modified from test() defined in the second file 
filename:junk.py 
from kkk import a 
import time 

def test(a): 
while(True): 

    print 'inside the infinite loop' 
    a={999:100} 

我想要的修改值kkk.py反映,當我打印

上面的代碼是扔我錯誤說測試(一)沒有在kkk.py中定義,雖然我正確地導入了測試()。

有人能幫我解決嗎?

回答

2

是不是因爲循環進口進口兩者互相文件的工作。

你可以做到以下幾點:

kkk.py

from junk import * 
import common 

print common.a 
test(common.a) 
print common.a 

junk.py

import common 
import time 

def test(a): 
     while(True): 
       print 'inside the infinite loop' 
       common.a={999:100} 
       break 

common.py現在

a={1:2,3:4} 

,如果你執行Python KKK。 py,你會得到下面的結果。

{1: 2, 3: 4} 
inside the infinite loop 
{999: 100} 

注意:我在while循環中添加了break以檢查結果。

+0

但這是標準庫的「常見」部分嗎? – syam

+0

不,我們創建了common.py文件,並在那裏添加了一個變量,因此我們在junk.py和kkk.py文件中都導入了通用文件。 當多個文件使用同一個變量時,這是一般方法。 – Nirmi

-2

嘗試修改全局變量如下圖所示

globals()['a'] = 'Required value' 

這將修改全局變量

+0

我需要從kkk導入a中添加第二個文件嗎?在這種情況下,我的第一個文件會引發錯誤。 利用了這一點,第一個文件仍然即使在全局後有同樣的「A」值()被調用 – syam

+0

做,從KKK進口* –

+0

沒有運氣 回溯(最近通話最後一個): 文件「/用戶/ SYAM .mohan/PycharmProjects/cluster_busy/kkk.py」,線路153,在 從垃圾進口* 文件 「/Users/syam.mohan/PycharmProjects/cluster_busy/junk.py」,第4行,在 從KKK進口* 文件「/Users/syam.mohan/PycharmProjects/cluster_busy/kkk.py」,行155,在 測試(a) NameError:名稱'test'未定義 – syam

相關問題