【Julia】变量

Abstract: 本文介绍Julia变量的相关内容,包括Julia的变量命名,以及命名的惯用法则(命名风格)
Keywords: Julia变量,Julia变量名,Julia命名一般规则

Julia 变量

如果Julia不是你的入门编程语言,那么对于编程语言中的变量应该已经习以为常,在C语言中,变量名对应于一个内存地址(需要声明变量类型)而在高级一些的语言中,比如python,变量名更抽象,他对应于一个值,或者可以理解为它存储了这个值,这个值可以是该语言允许的任何类型(不需要声明变量类型)。
Julia的变量属于后者,不需要声明变量类型,而是可以让你的合法变量名随时存储任何Julia变量类型的值。
如果Julia是你的第一门编程语言,那么你只要知道,变量名存储了一个变量值就可以了。
在交互模式下,我们进行一下操作,比如输入 x=10 后回车,就会输出10这个结果,接着你可以输入指令 x+1 回车,就会显示 10+1 的结果,如下:

# Assign the value 10 to the variable x
julia> x = 10
10

# Doing math with x's value
julia> x + 1
11

# Reassign x's value
julia> x = 1 + 1
2

# You can assign values of other types, like strings of text
julia> x = "Hello World!"
"Hello World!"

任何编译器解释器都不会关心这个变量叫什么名字,所有变量在解释器面前一视同仁,所以你不用担心你的变量名字不好听而影响程序执行效果。
接着再看几个例子(例子都来自Julia文档)

julia> x = 1.0
1.0

julia> y = -3
-3

julia> Z = "My string"
"My string"

julia> customary_phrase = "Hello world!"
"Hello world!"

julia> UniversalDeclarationOfHumanRightsStart = "人人生而自由,在尊严和权利上一律平等。"
"人人生而自由,在尊严和权利上一律平等。"

更厉害的是Julia的变量名不止局限于英文字符的组合,unicode字符通过 UTF-8 编码也可以成为变量,换句话说,希腊字母,中文字符,日文,韩文等这些都可以做变量名,这就厉害了,python 和c/c++ 是不行的:

julia> δ = 0.00001
1.0e-5

julia> 你好地球 = "Hello world"
"Hello world"

julia> 안녕하세요 = "Hello"
"Hello"
怎么样,可以用中文命名变量名了以后,你会在你的工程中使用中文命名你的变量名么? 注意到上面 $\delta$ 的同学们可能在想这个变量在实际中怎么使用呢?好消息,用latex就可以,当然只有部分编辑器或者IDE支持这个功能,Julia REPL 是支持的,上面的 $\delta$ 在Julia REPL的写法就是 \delta-*tab* ,如果你发现那个字符不知道怎么写,比如你看别人的代码中有个 $\zeta$ 不知道怎么写,你只需要在Julia REPL 中输入 ? 然后在后面粘贴那个字符即可。 有一些编程语言会为编译器或者编辑器定义一些常量以及函数,这些常量或函数一般不允许用户修改,但是Julia可以,如果你明确知道自己在做什么,那么这个操作可以帮助你的程序更好更符合你想象的方式进行,但是如果你还是个新手,建议不要随意修改内置常量或函数,因为你很有可能忘记自己修改过这个常量或函数,而在别的部分再次当做原始功能使用,就会造成很隐蔽的bug。
julia> pi = 3
3

julia> pi
3

julia> sqrt = 4
4

但是如果这个常量或函数先被使用,而你在之后尝试重新定义或者修改,那么Julia就会抛出错误:

julia> pi
π = 3.1415926535897...

julia> pi = 3
ERROR: cannot assign variable MathConstants.pi from module Main

julia> sqrt(100)
10.0

julia> sqrt = 4
ERROR: cannot assign variable Base.sqrt from module Main

Julia 变量命名规则

变量名的命名规则:

  1. 变量名以字母 A-Z or a-z,下划线,或者Unicode中大于00A0的部分 开头(更过详细的Unicode参考4)
  2. 像 + 这类操作符也是可以用作标识符的,但是这种用法非常特殊,比如再从新定义加法操作的时候,加法操作就是用(+) 来定义的,(+)=f 就是重新定义加法操作(更过详细的Unicode参考4)
  3. 语言内置的状态符是不可以用作变量名的,比如你不可把 if,else这类关键字用作变量名:
    julia> else = false
    ERROR: syntax: unexpected "else"
    
    julia> try = "No"
    ERROR: syntax: unexpected "="
  4. Unicode变量名的有一些注意细节,如果要大量使用,可以参考文档:https://docs.julialang.org/en/latest/manual/variables/

Julia 变量名的常用风格

命名风格不是语法内容,这些内容是一些常见的比较利于编程的习惯,如果你有自己的更好的习惯,也可以用你的方法来写,但是代码的作用一是为了驱动程序,得出我们想要的结果,第二则是让别人了解你的思想,如果大家都看不懂你的什么,那么这个代码其实是不成功的。
常见的命名风格有以下几条:

  1. 变量名采用小写字母
  2. 每个单词之间用 _ 分开,但一般不要使用,除非这个变量名特别长,且不好读。
  3. Types或者Modules的名字以大写字母开头,每个单词首字母大写,用驼峰形式代替下划线
  4. functions或者macros用小写形式,不要使用下划线。
  5. function如果要对其参数进行写的操作的话,函数名后面要加!,这种函数叫做 “变异函数”(mutating)或者“取代函数”(in-place)因为这种函数不只返回一个结果,还会在过程中修改参数的值。
  6. 更多编程风格可以参考https://docs.julialang.org/en/latest/manual/style-guide/

总结

本文介绍了Julia变量和简单的命名风格,好的编程风格是很重要的,无论对于编码还是调试。

Reference

  1. https://docs.julialang.org/en/latest/manual/variables/

原文地址: https://face2ai.com/Julia-Lang-3-Variables

0%