При импорте модуля в другой .py возврат функции отличается от его прямого запуска? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть следующая программа:

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]

Когда я вызываю эту забаву c из исходного файла, например:

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]]

, значение ('Hendiye', 123456789) правильно будет Обновить. но при вызове этой функции из другого файла python значение ('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]]
 

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

должна быть ошибка значения, ваш код дает одинаковый ответ в обоих случаях.

из файла:

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)

вывод:

[[20000.0, 40.0, -100.0], [1.0, 2.0, 1.0]]

и из оболочки

введите описание изображения здесь

итак, есть ошибка значения :)

0 голосов
/ 06 августа 2020

Ваш второй фрагмент кода не вызывает функцию так же, как первый.

Возможно, вы имели в виду:

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)

Вывод такой же, как и первый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...