如何在 python 中将值从一个脚本导入并更改为另一个脚本?
How do I import and change a value from one script to another in python?
目前我正在 python 中编写数字 ATM。当我想创建一个具有可自定义余额值的用户时,我遇到了这个问题,但是在不同的 python 脚本文件中(我们称这个文件为 B)。在主脚本文件的一个函数中,它更改了导入的值。问题是文件 B 中的值没有改变。我该怎么做才能完成这项工作?
所以有些变量是瑞典语。希望不要打扰!
文件A
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:
balance = 4711
b.py:
# do NOT use:
from a import balance
balance = balance + 1
# DO use:
import a
a.balance = a.balance + 1
但模块 a
中的方法可能比仅与其他模块全局变量一起调和更合适:
a.py:
_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
目前我正在 python 中编写数字 ATM。当我想创建一个具有可自定义余额值的用户时,我遇到了这个问题,但是在不同的 python 脚本文件中(我们称这个文件为 B)。在主脚本文件的一个函数中,它更改了导入的值。问题是文件 B 中的值没有改变。我该怎么做才能完成这项工作?
所以有些变量是瑞典语。希望不要打扰!
文件A
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:
balance = 4711
b.py:
# do NOT use:
from a import balance
balance = balance + 1
# DO use:
import a
a.balance = a.balance + 1
但模块 a
中的方法可能比仅与其他模块全局变量一起调和更合适:
a.py:
_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