Julia机器学习核心编程.4
在win上加e参数,执行这个代码.不可以.类unix可以试试,我有空操作
我超级喜欢这种循环写法
我这个传参写法没有错,不知道这么久没有出来
与其他编程语言一样,Julia可以更改存储在变量中的值或改变其状态。
交换两个变量,python 见怪不怪
代码01行定义了_ab变量,这个名称可以使用。代码03行定义了@ab,04行报错,虽然提示的是“=”错误,但可以推测出其实是变量名称错误。代码05行直接输入了值1000,06行得到了一个输出结果。请注意,“!”(感叹号)不应该在变量名称中使用,因为以感叹号结尾的函数用于修改其参数。
我们可以使用UTF-8中任何大于00A0的符号集(尽管还有很多符号不能使用)。
命名约定
虽然Julia在命名上没有什么限制,几乎所有的组合都是被允许的,但还是有必要遵循一些命名规则。
· 变量名称为小写形式。
· 下画线用于分隔变量名称中的不同单词,但不建议使用带下画线的名称。
· 函数和宏名称小写,不使用下画线。
· 类型和模块的名称的第一个字符大写,最好使用驼峰命名法。
· 修改或写入任何参数的函数以“!”符号结尾。
Julia是一种强类型语言,因此有必要对变量的类型进行定义。如果没有明确定义变量的类型,那么Julia将尝试通过分配给变量的值来进行推断。当然,我们也可以使用Julia提供的typeof()函数来计算出变量的类型。
代码01行将_ab作为参数传入typeof()中,它返回了Int64,也就是说,_ab的类型是Int64。这里的Int64和String指的是类型。Int有不同的大小,通常其默认值与操作系统的字长有关。
在Julia中,我们可以使用下画线来分隔数字。
应用嘛,比较多.比如0太多的时候
可看最大的存放量,可看平台位数
在处理无法用32位整数(Int32)表示的大数字的情况下,即使在32位计算机上,Julia也会创建64位整数(Int64),而不是32位。
01 julia> large_integer = 99999999999
02 julia> typeof(large_integer)
03 Int64
数据溢出
在下面的范例中,定义了一个具有Int16类型的x变量的函数,并将它赋值为10000.
01 julia> x = Int16(10000)
02 10000
03 julia> x*x
04 -7936
代码01行将x赋值为Int16类型的值,代码03行执行x*x时超过了Int16类型的范围,导致数据溢出。
01 #16位Int类型的最大值为32767
02 julia> x = typemax(Int16)
03 32767
04 #Julia将保持变量类型,即使超过最大值
05 julia> x + Int16(1)
06 -32768
代码01行将x赋值为Int16类型的最大值32767,并在代码05行将x增加1,这使得x超过了该类型的最大值,导致数据溢出。
布尔数据类型
Bool是一种广泛使用的逻辑数据类型,它有真和假两种状态。
与其他编程语言不同,在Julia中不会将0、NULL或空字符串视为false。比如下面的代码:
01 julia> if 0
02 println("hello")
03 end
代码01行中的if 0将报错,错误信息如下:
01 TypeError:上下文中使用非布尔值(Int64)
02 Stacktrace:[1] include_string(:: String,:: String)
03 at ./loading.jl:515
意思就是代码01行中的0不是布尔值,而是Int64类型的值。
其实我觉得把0放在一个大的数集中,很正确!