Docs > Variables
Variables are declared using `=`. For example:
```
a = 5
```
They can be accessed using their name. For example, after running the above, `a` would evaluate to `5`. Access an undefined variable will throw an error. An assignment evaluates to its right hand side: `a = 5` would evaluate to `5`. Thus, we can assign to multiple variables at once:
```
a = b = 5
```
Variables cannot be modified in anything that creates a new scope, ie. blocks and functions. However, they can be modified in loops and if.
Variable names can be any sequence of a letter or underscore followed by a letter, number, or underscore. You may also use `.` and `:` in a variable name; thus, `a`, `_b`, `c123`, `a.b`, and `c:d` are all valid names. Note that this is the only way to call methods at the moment: `4.__as_string()` is not valid code, but `a.__as_string()` is.