Python

Advantage of Not Re-Assigning Values

Efficiency

Not re-assigning values saves memory and CPU cycles, making code more efficient.

Clarity

Code is easier to read and understand when variables have consistent values throughout.

Debugging

Debugging is easier when variables have consistent values and unexpected changes are minimized.

Maintenance

  • Code is easier to maintain when variables have consistent values.
  • Changes to variable values can have unintended consequences.

Best Practice

Not re-assigning values is a best practice in Python and is recommended by the PEP 8 style guide.

def sum_accounts_balance_view(account_ids):
    balance_sum = 0

    for account_id in account_ids:
        account = None

        if get_account_data_from_backend(account_id):
            account = get_account_data_from_backend(account_id)
        elif get_account_data_from_external_system(account_id):
            account = get_account_data_from_external_system(account_id)
        else:
            continue

        if "debit" in account:
            if "value" in account["debit"]:
                balance_sum += account["debit"]["value"]

    return balance_sum
def sum_accounts_balance_view(account_ids):
  
    balance_sum = sum(get_amounts_from_accounts(accounts))
  
    return balance_sum
def get_amounts_from_accounts(accounts):
    for account in accounts:
        if "debit" in account:
            if "value" in account["debit"]:
                balance_sum += account["debit"]["value"]
                #MESS AGAIN
            
            
def sum_accounts_balance_view(account_ids):  
    
    balance_sum = sum(get_amounts_from_accounts(accounts))
  
    return balance_sum

NESTING = BAD

Flat is better than nested.
def get_amount_from_account(account):
    if "debit" not in account:
        return 0
      
    if "value" not in account["debit"]:
        return 0

    return account["debit"]["value"]
                
            
def sum_accounts_balance_view(account_ids):  
    
    balance_sum = sum(map(get_amount_from_account, accounts))
  
    return balance_sum
def get_amount_from_account(account):
    if "debit" not in account:
        return 0
      
    if "value" not in account["debit"]:
        return 0

    return account["debit"]["value"]
                
            
def get_accounts_from_ids(account_ids):
    accounts = []
    
    for account_id in account_ids:
        if get_account_data_from_backend(account_id):
            account = get_account_data_from_backend(account_id)
        elif get_account_data_from_external_system(account_id):
            account = get_account_data_from_external_system(account_id)
        else:
            continue
        
        accounts.append(account)
    
    return accounts
      
      
def sum_accounts_balance_view(account_ids):  
  
    accounts = get_accounts_from_ids(account_ids)
    
    balance_sum = sum(map(get_amount_from_account, accounts))
  
    return balance_sum
def get_amount_from_account(account):
    if "debit" not in account:
        return 0
      
    if "value" not in account["debit"]:
        return 0

    return account["debit"]["value"]
                
    
def get_account_from_id(account_id):
    if account := get_account_data_from_backend(account_id):
        return account
    
    if account := get_account_data_from_external_system(account_id):
        return account
    
    return None

    
def get_accounts_from_ids(account_ids):
    accounts = []
    
    for account_id in account_ids:
        account = get_account_from_id(account_id)
        
        if account:
             accounts.append(account)
    
    return accounts
      
      
def sum_accounts_balance_view(account_ids):  
  
    accounts = get_accounts_from_ids(account_ids)
    
    balance_sum = sum(map(get_amount_from_account, accounts))
  
    return balance_sum
def get_amount_from_account(account):
    if "debit" not in account:
        return 0
      
    if "value" not in account["debit"]:
        return 0

    return account["debit"]["value"]
                
    
def get_account_from_id(account_id):
    if account := get_account_data_from_backend(account_id):
        return account
    
    if account := get_account_data_from_external_system(account_id):
        return account
    
    return None

    
def get_accounts_from_ids(account_ids):
    return filter(None, map(get_account_from_id, account_ids))
   
      
def sum_accounts_balance_view(account_ids):  
    accounts = get_accounts_from_ids(account_ids)
    
    balance_sum = sum(map(get_amount_from_account, accounts))
  
    return balance_sum
def sum_accounts_balance_view(account_ids):
    balance_sum = 0

    for account_id in account_ids:
        account = None

        if get_account_data_from_backend(account_id):
            account = get_account_data_from_backend(account_id)
        elif get_account_data_from_external_system(account_id):
            account = get_account_data_from_external_system(account_id)
        else:
            continue

        if "debit" in account:
            if "value" in account["debit"]:
                balance_sum += account["debit"]["value"]

    return balance_sum
def test_sum_accounts_balance_view_if_no_accounts(): ...
def test_sum_accounts_balance_view_if_no_accounts(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_fails(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system_fails(): ...
def test_sum_accounts_balance_view_if_no_accounts(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_fails(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system_fails(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_have_debit_no_value(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_have_debit_and_value(): ...
def test_sum_accounts_balance_view_if_no_accounts(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_fails(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system_fails(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_have_debit_no_value(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_have_debit_and_value(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system_have_debit_no_value(): ...
def test_sum_accounts_balance_view_if_accounts_from_external_system_have_debit_and_value(): ...
def test_sum_accounts_balance_view_if_accounts_from_backend_and_external_system_have_debit_and_value(): ...
def get_amount_from_account(account):
    if "debit" not in account:
        return 0
      
    if "value" not in account["debit"]:
        return 0

    return account["debit"]["value"]
                
    
def get_account_from_id(account_id):
    if account := get_account_data_from_backend(account_id):
        return account
    
    if account := get_account_data_from_external_system(account_id):
        return account
    
    return None

    
def get_accounts_from_ids(account_ids):
    return filter(None, map(get_account_from_id, account_ids))
   
      
def sum_accounts_balance_view(account_ids):  
    accounts = get_accounts_from_ids(account_ids)
    
    balance_sum = sum(map(get_amount_from_account, accounts))
  
    return balance_sum
def get_amount_from_account_if_no_debit(): ...
def get_amount_from_account_if_debit_no_value(): ...
def get_amount_from_account_if_debit_and_value(): ...
def get_account_from_id_for_backend(): ...  
def get_account_from_id_for_external_system(): ...  
def get_account_from_id_when_user_not_found(): ...  
def get_accounts_from_ids_when_no_accounts(): ...  
def get_accounts_from_ids_when_accounts(): ...  
def sum_accounts_balance_view_(): ...

Thank You!

For Attending Pykonik

Kraków

Enjoy the beauty of this city

LetLetLetConstConstConst

By Kuba Wasielak

LetLetLetConstConstConst

  • 77