Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中从一个脚本导入和更改值?_Python_Project - Fatal编程技术网

如何在python中从一个脚本导入和更改值?

如何在python中从一个脚本导入和更改值?,python,project,Python,Project,目前,我正在用python编写一个数字ATM。当我想要创建一个具有可自定义的balance值的用户时,遇到了这个问题,但是在另一个python脚本文件中(我们称这个文件为B)。在主脚本文件中的函数中,它更改导入的值。问题是文件B中的值没有更改。我能做些什么来完成这件事 所以有些变量是瑞典语。希望不要麻烦 归档 def overfor(): overforingsInput = float(input('Hur mycket vill du överföra?\n')) if User1.sald

目前,我正在用python编写一个数字ATM。当我想要创建一个具有可自定义的balance值的用户时,遇到了这个问题,但是在另一个python脚本文件中(我们称这个文件为B)。在主脚本文件中的函数中,它更改导入的值。问题是文件B中的值没有更改。我能做些什么来完成这件事

所以有些变量是瑞典语。希望不要麻烦

归档

def overfor():
overforingsInput = float(input('Hur mycket vill du överföra?\n'))
if User1.saldo - overforingsInput > 0:
    User1.saldo - overforingsInput
print '-', overforingsInput, 'kr\n', 'Ditt saldo är nu', User1.saldo, 'kr'
文件B

class User1:
userName = 'felsaf'
userPin = 1234
saldo = 150

只需导入另一个模块而不是变量:

a、 py:

b、 py:

但模块
a
中的方法可能比仅使用其他模块全局进行回火更合适:

a、 py:

或者在并发环境中:

from threading import Lock

_balance_lock = Lock()

class BalanceStale(Exception):
    pass

def set_balance_if_known_value_is_still_current(old_value, new_value):
    with _balance_lock:
        if _balance != old_value:
            raise BalanceStale('{} != {}'.format(_balance, old_value))
        else:
            _balance = new_value

1) 请包含代码的相关部分以说明问题。2) 告诉我们为什么要更改B中的值。这背后的想法是什么?提供你的代码,以及预期的行为和实际的行为。你是说?这就是我所做的,但没有成功。。。让我添加代码,看看我做错了什么。一旦导入的值是分开的,那么
a.balance
的所有用户都必须使用
a.balance
而不是导入的(过时的)
balance
。因此,最好在
a
中使用“getter”函数:
def get\u balance:return balance
。在
a
中,在
\u balance
中添加一个前导下划线,以表明其他模块不应导入变量。
# do NOT use:
from a import balance
balance = balance + 1

# DO use:
import a
a.balance = a.balance + 1
_balance = 4711

def get_balance():
    return _balance

def set_balance(new_balance):
    _balance = new_balance
from threading import Lock

_balance_lock = Lock()

class BalanceStale(Exception):
    pass

def set_balance_if_known_value_is_still_current(old_value, new_value):
    with _balance_lock:
        if _balance != old_value:
            raise BalanceStale('{} != {}'.format(_balance, old_value))
        else:
            _balance = new_value