Julia语言介绍(一)变量、类型和函数

科学计算语言Julia在设计上融合了Lisp、Python、JavaScript、Matlab等多种特点,下面我们来看看它是如何结合这些语言的优势,为计算科学提供强大的支持。

特殊符号变量

变量定义支持Unicode字符,非常有利于数学物理公式的表达,如希腊字母表,可以输入 / + 罗马拼音 + TAB:

julia> α = 3 # /alpha + TAB
3

这也意味着可以将变量命名为中文,如果不嫌打字麻烦的话:

julia> 生肖 = "羊"
"羊"
julia> 生肖
"羊"

Julia内置了一些数学计算常见的值为常量,注意的是,即使是内置的常量和函数,我们也可以重定义:

julia> pi
π = 3.1415926535897...
julia> pi = 3
Warning: imported binding for pi overwritten in module Main
3

ans这个变量指向上下文最后一个值,无论有没有变量指向它:

julia> ans
3
julia> 4
4
julia> ans
4

数值计算

Julia是动态类型系统,可以完成硬件支持范围之外的高精度计算,但速度会受硬件本身影响。数值和浮点的32/64位是基于操作系统类型指定,可以使用 WORD_SIZE 查来看系统类型:

julia> WORD_SIZE
64
julia> typeof(1)
Int64
julia> typeof(1.0)
Float64

对于非常大的数值,不管操作系统的类型是什么,Julia都会选择正确的数值类型。

julia> typeof(3000000000)
Int64

在运算符操符上和其它语言没有太大不同,比较操作符类似JavaScript,使用 === 加入类型比较,其它可直接阅读官方文档基本数学运算

复数和有理数的计算操作也非常方便,im 表示虚数,// 表示分数:

julia> 1 + 2im
1 + 2im
julia> 3(1 + 2im)
3 + 6im
julia> 3//4
3//4
julia> 5//12 - 1//4
1//6

一些基本的复数操作函数:

# 实数运算
julia> real(1 + 2im)
1
# 共轭复数
julia> conj(1 + 2im)
1 - 2im

函数

函数定义的基本语法以 end 结尾,另一种赋值形式的定义更为简洁:

# 标准定义
function f(x,y)
  x + y
end
# 赋值形式
f(x,y) = x + y

赋值形式只支持一个表达式,但在Julia中可以使用复合表达式:

julia> f(x,y) = (x + y + y)
f (generic function with 1 method)
julia> f(x,y) = (if x < y x + y else x -y end) 
f (generic function with 1 method) 
julia> f(1,3)
4
julia> f(4,3)
1

函数的使用上遵从了许多科学计算人员和数据分析师的习惯,提供了 apply() 方法,对于操作符,也可将其视为函数进行调用:

# 基本调用
julia> f(5,3)
2
# apply
julia> apply(f,5,3)
2
# 运算符即函数
julia> +(5,3)
8

多值返回也是计算中必不可少的利器:

julia> foo(a,b) = a+b, a*b
julia> f(5,3)
(8,15)

可变参数函数提供了任意个数参数的传入,它由参数名称加“…”来定义:

julia> bar(a,b,x...) = (a,b,x)
julia> bar(1,2)
(1,2,())
julia> bar(1,2,3)
(1,2,(3,))
julia> bar(1,2,3,4,5,6)
(1,2,(3,4,5,6))

可选参数的定义和Python语法非常接近:

function parseint(num, base=10)
   ###
end
参考:The Julia Manual, release 0.3

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>