## 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.