## Definition Any change a [[subprogram]] causes outside of producing a return value. *Noun.* > Calling `deposit()` has the side effect of changing the account's balance, rather than just returning a value. ## Characteristics - Persists after the subprogram has finished running; - often invisible from the subprogram's signature alone; and - can make code harder to reason about, as calling the subprogram does more than its name or return type suggests. ## Examples - Outputting text on the screen—e.g., `print()`; - writing text to a file; - appending a value to a global list; and - changing an [[object]]'s [[object state|state]] by updating an [[attribute]]. ## Non-examples - Returning a value.