Переменные, имена и комментарии
Как объявлять переменные в Julia, какие имена допустимы и чем динамическая типизация отличается от Python.
Переменная — имя, связанное со значением. В Julia типизация динамическая: тип определяется по значению, но при желании его можно аннотировать.
Объявление переменных
Переменная создаётся обычным присваиванием — никаких ключевых слов не требуется:
age = 25
name = "Анна"
pi_value = 3.14159
is_active = trueКак и в Python, переменная может в любой момент сменить тип:
x = 10 # сейчас x — целое число
x = "текст" # теперь x — строка, это допустимоUnicode-имена: фишка Julia
В отличие от Python, Julia позволяет использовать в именах переменных греческие буквы, индексы и многие математические символы Unicode. В REPL их набирают через LaTeX-сокращения: например, \alpha и Tab превращается в букву α.
α = 0.5 # \alpha + Tab
λ = 2.0 # \lambda + Tab
x² = 16 # x\^2 + Tab
Δt = 0.01 # \Delta + Tab
println(α + λ)Вывод:
2.5
Это особенно ценно в научном коде: формула в программе выглядит почти как в учебнике. Использовать такие имена не обязательно, но они делают численный код выразительнее.
Соглашения об именовании
Сообщество Julia придерживается стиля:
- Переменные и функции — в
snake_caseили просто строчными:total_sum,area. - Типы и модули — в
CamelCase:DataFrame,LinearAlgebra. - Функции, изменяющие свои аргументы, заканчиваются на
!:push!,sort!. - Константы — обычно ЗАГЛАВНЫМИ:
const MAX_ITER = 1000.
Константы
Ключевое слово const сообщает компилятору, что значение не изменится. Это помогает оптимизации, особенно для глобальных переменных:
const GRAVITY = 9.81
const SPEED_OF_LIGHT = 299_792_458 # подчёркивания в числах — для читаемостиКомментарии
# однострочный комментарий
#=
многострочный
комментарий
=#
x = 5 # комментарий в конце строкиКак работает под капотом
Хотя типизация динамическая, для скорости важно, чтобы тип переменной не менялся внутри «горячего» кода. Когда Julia компилирует функцию, она специализирует код под конкретные типы. Если переменная то целое, то строка, компилятор не может выбрать одну быструю версию. Поэтому смена типа переменной удобна в REPL, но в производительном коде её избегают — об этом подробно в разделе про производительность.
Частые ошибки
Глобальные переменные без const — главный убийца скорости в Julia. Если глобальная переменная может изменить тип в любой момент, компилятор вынужден перепроверять её при каждом обращении. Объявляйте глобальные константы через const или, ещё лучше, оборачивайте вычисления в функции.
Итоги
- Переменные создаются присваиванием, без ключевых слов.
- Типизация динамическая, но тип лучше не менять в производительном коде.
- В именах можно использовать Unicode-символы (α, λ, Δ) — фишка для научного кода.
- Константы объявляют через
const; это помогает оптимизации. - Подчёркивания в числовых литералах (
1_000_000) улучшают читаемость.