Julia 基本语法
本章介绍 Julia 语言的基本语法规则,帮助您快速上手编程。
注释
单行注释
使用 # 开始单行注释:
julia
# 这是一个单行注释
x = 10 # 行尾注释多行注释
使用 #= 和 =# 包围多行注释:
julia
#=
这是一个多行注释
可以跨越多行
用于详细说明
=#变量
变量命名
Julia 变量名遵循以下规则:
- 以字母(A-Z, a-z)、下划线(_)或 Unicode 字符开头
- 可以包含数字(但不能以数字开头)
- 区分大小写
- 不能使用保留字
julia
# 有效的变量名
x = 1
my_variable = 2
变量 = 3 # 支持中文
α = 0.5 # 支持希腊字母
_private = 4
# 无效的变量名
# 2nd = 5 # 不能以数字开头
# for = 6 # 不能使用保留字变量赋值
julia
# 单个赋值
x = 10
# 多重赋值
a, b, c = 1, 2, 3
# 交换变量
a, b = b, a
# 链式赋值
x = y = z = 0常量
使用 const 声明常量:
julia
const PI = 3.14159
const MAX_SIZE = 100
# 尝试修改常量会产生警告
# PI = 3.14 # 警告:重新定义常量基本数据类型
数值类型
julia
# 整数
a = 42 # Int64 (64位系统)
b = Int32(42) # Int32
# 浮点数
c = 3.14 # Float64
d = Float32(3.14) # Float32
# 布尔值
e = true
f = false字符和字符串
julia
# 字符(单引号)
char = 'A'
# 字符串(双引号)
str = "Hello, Julia!"
# 多行字符串
multiline = """
这是一个
多行字符串
"""输出
print 和 println
julia
# print 不换行
print("Hello")
print(" World") # 输出: Hello World
# println 自动换行
println("Hello")
println("World")
# 输出:
# Hello
# World字符串插值
使用 $ 进行字符串插值:
julia
name = "Julia"
age = 10
println("$name is $age years old.")
# 输出: Julia is 10 years old.
# 表达式插值
println("2 + 3 = $(2 + 3)")
# 输出: 2 + 3 = 5格式化输出
使用 @printf 宏:
julia
using Printf
@printf("整数: %d\n", 42)
@printf("浮点数: %.2f\n", 3.14159)
@printf("字符串: %s\n", "Hello")
@printf("补零: %05d\n", 42) # 输出: 00042输入
readline
julia
print("请输入您的名字: ")
name = readline()
println("你好, $name!")读取数值
julia
print("请输入一个数字: ")
input = readline()
num = parse(Int, input)
println("您输入的数字是: $num")
# 或使用 Float64
num_float = parse(Float64, readline())代码块
分号
分号用于抑制 REPL 中的输出,或在一行中分隔多个语句:
julia
# 抑制输出
x = 10;
# 多个语句在一行
a = 1; b = 2; c = 3代码块
使用 begin...end 创建代码块:
julia
result = begin
x = 10
y = 20
x + y # 最后一个表达式的值作为块的值
end
println(result) # 输出: 30也可以使用括号:
julia
result = (x = 1; y = 2; x + y)
println(result) # 输出: 3作用域
全局作用域
在模块顶层定义的变量:
julia
global_var = 100
function show_global()
println(global_var)
end局部作用域
函数、循环、条件语句内部:
julia
function local_example()
local_var = 10 # 局部变量
println(local_var)
end
# local_var 在函数外不可访问let 块
创建新的局部作用域:
julia
let
x = 10
y = 20
println(x + y)
end
# x 和 y 在 let 块外不可访问global 关键字
在局部作用域中访问或修改全局变量:
julia
counter = 0
function increment()
global counter
counter += 1
end
increment()
println(counter) # 输出: 1模块
定义模块
julia
module MyModule
export greet # 导出的函数
const VERSION = "1.0"
function greet(name)
println("Hello, $name!")
end
function internal_function()
# 内部函数,不导出
end
end # module使用模块
julia
# 使用模块中导出的所有内容
using MyModule
greet("Julia")
# 只导入特定内容
using MyModule: greet
# 导入模块本身
import MyModule
MyModule.greet("Julia")标准库模块
julia
using Statistics
using LinearAlgebra
using Random表达式和语句
复合表达式
julia
# 使用 begin...end
z = begin
x = 1
y = 2
x + y
end
# 使用分号链
z = (x = 1; y = 2; x + y)条件表达式(三元运算符)
julia
x = 10
result = x > 5 ? "大于5" : "小于等于5"
println(result) # 输出: 大于5短路求值
julia
# && - 如果第一个为真,执行第二个
x = 10
x > 5 && println("x 大于 5")
# || - 如果第一个为假,执行第二个
x < 5 || println("x 不小于 5")Nothing 和 Missing
Nothing
表示"无值"或函数无返回值:
julia
function no_return()
println("这个函数不返回值")
end
result = no_return()
println(result) # 输出: nothing
println(isnothing(result)) # 输出: trueMissing
表示缺失的数据(类似 SQL 的 NULL):
julia
data = [1, 2, missing, 4, 5]
println(ismissing(data[3])) # 输出: true
# missing 的传播性
println(1 + missing) # 输出: missing
# 跳过 missing 值
using Statistics
println(mean(skipmissing(data))) # 输出: 3.0类型注解
Julia 允许可选的类型注解:
julia
# 变量类型注解
x::Int = 10
# 函数参数类型
function add(a::Int, b::Int)
return a + b
end
# 返回类型
function multiply(a, b)::Float64
return a * b
end代码风格建议
变量名使用小写字母和下划线
juliamy_variable = 10类型名使用驼峰命名法
juliastruct MyCustomType field::Int end函数名使用小写字母
juliafunction calculate_sum(arr) return sum(arr) end常量使用大写字母
juliaconst MAX_ITERATIONS = 1000适当使用空格和缩进
juliafunction example(x, y) if x > 0 return x + y else return y end end
下一步
掌握基本语法后,请继续学习: