[英]When importing a module in another .py , return of function is different to directly run it?
I have the following program:我有以下程序:
def savings_account(client_to_accounts: Dict[Tuple[str, int],
List[List[float]]], valid_client: Tuple[str, int],
balance: float, interest: float)-> list:
''' Return the newest update of accounts added.'''
key_list = client_to_accounts.keys()
for i in key_list:
if i == valid_client:
last = len(client_to_accounts[i][0]) - 1
client_to_accounts[i][0].insert(last,balance)
client_to_accounts[i][1].insert(last,interest)
return client_to_accounts[i]
When I call this func from original file like to:当我从原始文件中调用此函数时,例如:
actual = savings_account({('Habib', 696969696): [[1.0, 10000.0], [2.0, 1.0]],
('Hendiye', 123456789): [[20000.0, -100.0], [1.0, 1.0]]},
('Hendiye', 123456789),40.0, 2.0)
print(actual)
#printed: [[20000.0, 40.0, -100.0], [1.0, 2.0, 1.0]]
the value of ('Hendiye', 123456789)
correctly will be update. ('Hendiye', 123456789)
的值将正确更新。 but when call this function from other python file the value of ('Hendiye', 123456789)
isn't updated.但是当从其他 python 文件调用此 function 时,
('Hendiye', 123456789)
的值不会更新。
import banking_functions
param1 = {('Habib', 696969696): [[1.0, 10000.0], [2.0, 1.0]], ('Hendiye', 123456789): [[20000.0,
-100.0], [1.0, 1.0]]}
param2 = (('Hendiye', 123456789),40.0, 2.0)
param3 = 40.0
param4 = 2.0
actual = banking_functions.savings_account(param1, param2, param3, param4)
#expected = [[20000.0, 40.0, -100.0], [1.0, 2.0, 1.0]]
print(actual)
#printed : [[20000.0, -100.0], [1.0, 1.0]]
Your second snippet does not call the function in the same way the first does.您的第二个片段不会像第一个片段那样调用 function。
Did you mean:你的意思:
import banking_functions
param1 = {('Habib', 696969696): [[1.0, 10000.0], [2.0, 1.0]], ('Hendiye', 123456789): [[20000.0,
-100.0], [1.0, 1.0]]}
param2 = ('Hendiye', 123456789) # Just a tuple of two items
param3 = 40.0
param4 = 2.0
actual = banking_functions.savings_account(param1, param2, param3, param4)
#expected = [[20000.0, 40.0, -100.0], [1.0, 2.0, 1.0]]
print(actual)
Output same as first now. Output 现在和第一个一样。
there must be a value error your code gives the same answer in both cases.必须有一个值错误,您的代码在这两种情况下都给出了相同的答案。
from file:从文件:
from typing import List,Dict,Tuple
def savings_account(client_to_accounts: Dict[Tuple[str, int],
List[List[float]]], valid_client: Tuple[str, int],
balance: float, interest: float)-> list:
''' Return the newest update of accounts added.'''
key_list = client_to_accounts.keys()
for i in key_list:
if i == valid_client:
last = len(client_to_accounts[i][0]) - 1
client_to_accounts[i][0].insert(last,balance)
client_to_accounts[i][1].insert(last,interest)
return client_to_accounts[i]
param1 = {('Habib', 696969696): [[1.0, 10000.0], [2.0, 1.0]], ('Hendiye', 123456789): [[20000.0,
-100.0], [1.0, 1.0]]}
param2 = (('Hendiye', 123456789),40.0, 2.0)
param3 = 40.0
param4 = 2.0
actual = savings_account(param1, param2, param3, param4)
print(actual)
output: output:
[[20000.0, 40.0, -100.0], [1.0, 2.0, 1.0]]
and from shell从 shell
so, there is value error:)所以,有值错误:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.