在编写Julia代码的过程中,会发现与其他语言有不少相似之处,例如Matlab、R或Python,但也有着明显的不同。通过与其他语言的对比,我们可以更加深入地理解Julia,也能够在熟悉其他语言的基础上,更快地学习Julia语言。
与Python相比
Python语言与Julia同为动态语言,都有着极为高效简洁的开发风格,主要差异有:
- Julia代码编写格式无要求
众所周知,Python在代码编写时,是需要“游标卡尺”的,格式就是语法规则的一部分,而Julia语言没有这方面的限制,以关键字对(以end结束)形成构造完整的结构。
- Julia中没有Python中的pass关键字
- Julia中对数组、字符串等的索引是从1开始的,而不是像Python等语言那样从0开始。
- 数组Slice索引时,Julia取得最后的元素
在对数组进行slice索引时,Julia按slice结构包括最后一个元素,但在Python最后一个元素并不在slice中。例如Julia中的a[2:3]取得第二个及第三个元素,相当于Python中的a[1:3],这是有所不同的,需要特别注意。
- Julia不支持负值索引
在对数组索引时,Julia不支持Python中以负值的方式按倒序取得数组中的元素。但Julia可以通过end关键字取得数组中的最后一个元素,并可通过end-n获得倒数n个元素。
- Julia数组采用列序存储,而Python中的NumPy默认采用的则是行序存储方式。
- 运算符%在Julia中是取余操作,在Python中则是取模操作。
- Julia更新运算符不会就地修改原变量
需要注意的是, Julia中的更新运算符与Python有着很大的不同,包括+=,-=等,不会就地修改原变量,例如:
julia> A = [1 1 1 1]
1×4 Array{Int64,2}:
1 1 1 1
julia> B = A;
julia> B
1×4 Array{Int64,2}:
1 1 1 1
julia> B += 3
1×4 Array{Int64,2}:
4 4 4 4
julia> B
1×4 Array{Int64,2}:
4 4 4 4