从另一个文件中的函数全局修改变量

时间:2017-09-07 05:50:27

标签: python python-2.7 function

我的情景就像 我有一个脚本,我有另一个功能,它将在后台无限循环中运行。在这个后台函数中,我正在修改一个变量。 我希望main函数获得相同的变量更新值..

 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}

我希望修改的a值在我打印

时反映在kkk.py中

上面的代码告诉我错误,虽然我正确地导入了test(),但测试(a)没有在kkk.py中定义。

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分: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 in check来检查结果。

答案 1 :(得分:-2)

尝试修改全局变量,如下所示

$text = [
    0 => ['Andi', 'NOB', false],
    1 => ['menginap', 'V', false],
    2 => ['di', 'PREP', false],
    3 => ['Hotel', 'N', false],
    4 => ['Neo', 'NE', false],
    5 => ['Malioboro', 'NE', false],
    6 => ['selama', 'N', false],
    7 => ['satu', 'NUM', false],
    8 => ['minggu', 'N.',false],
];
$flag = [0 => 3, 1 => 4, 2 => 5, 3 => 6];
foreach ($text as $key => &$value) {
    if(in_array($key, $flag)){
        $value[2] = true;
    }
}
echo "<pre>";
print_r($text);

这将修改全局变量