Mert ott van definiálva a főprogramban az "a" változó. Ezt átveszi a függvény. Viszont ha megváltoztatod a függvényből az értékét, az nem megy vissza a főprogramba. Kivéve
def perform_strategy(): global a a=5
esetben.
Látszik, hogy a Python nem egy szigorú nyelv. Ellenpéldaként próbáld meg ugyanezt Rust-ban. A globális változóra már eleve kiakad, legalábbis ha nem konstansként definiálod.