日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

探索Julia(part10)--自定义函数

發布時間:2023/12/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 探索Julia(part10)--自定义函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾

參考自:Julia數據科學應用–Zacharias Voulgaris;官方文檔

使用Julia-1.1.1



自定義函數


Functions


在Julia中,函數是將參數值的元組映射到返回值的對象。Julia函數不是純粹的數學函數,因為函數可以改變程序的全局狀態,并受其影響,在Julia中定義函數的基本語法是:

function f(x,y)x + y end

在Julia中還有第二種更簡潔的定義函數的語法。上面演示的傳統函數聲明語法等價于以下緊湊的"賦值形式":

f(x,y) = x + y

在賦值形式中,函數體必須是單個表達式,盡管它可以是復合表達式(參見復合表達式)。簡短、簡單的函數定義在Julia中很常見。


函數調用使用傳統的括號語法:

f(2,3) #返回值 5

函數名后不加括號,則表達式f指的是函數對象,可以像任何值一樣傳遞:

g = f; g(1, 2) #返回值 3

和變量一樣,Unicode也可以用于函數名:

∑(x,y) = x + y; ∑(1, 2) #返回值 3

return關鍵字


默認情況下,函數返回的值是最后一個計算表達式的值,該表達式是函數定義體中的最后一個表達式,return關鍵字將導致函數立即返回,例如:

function g2(x,y)return x * yx + y end;

調用:

g2(5, 6) #返回值 30

返回值類型


可以在函數聲明中使用::操作符指定返回值類型,這將返回值轉換為指定的類型

function g3(x, y)::Int8return x * y end;

查看返回值類型:

typeof(g3(3, 4)) #返回值 Int8

對于不需要返回值的函數(僅用于某些副作用的函數),Julia約定是不返回值:

function printx(x)println("x = $x")return nothing end

這是一種約定,因為nothing不是一個Julia關鍵字,而是唯一的nothing類型的單例對象。


Operators Are Functions


在Julia中,大多數操作符是支持特殊語法的函數(具有特殊求值語義的操作符,如&&和||例外,這些運算符則不能為函數),我們可以應用他們使用圓括號參數列表,就像其他任何函數一樣:

julia> 1 + 2 + 3 6julia> +(1,2,3) 6

中綴形式(infix form)與函數應用程序形式(function application form)完全相同,實際上,前者被解析為在內部生成函數調用,這也意味著我們可以分配和傳遞操作符,比如+和*,就像你對待其他函數值一樣:

julia> f1 = +;julia> f1(1,2,3) 6

具有特殊名稱的操作符


一些特殊表達式對應于調用具有不明顯名稱的函數,這些是:

ExpressionCalls
[A B C ...]hcat
[A; B; C; ...]vcat
[A B; C D; ...]hvcat
A'adjoint
A[i]getindex
A[i] = xsetindex!
A.ngetproperty
A.n = xsetproperty!

匿名函數


Julia中的函數是一類對象:它們可以被賦給變量,并使用標準的函數調用語法從已賦值的變量中調用。它們可以用作參數,也可以作為值返回。它們也可以匿名創建,無需給出名稱,例如:

julia> x -> x^2 + 2x - 1 #3 (generic function with 1 method)

Julia創建了一個函數,參數為x,返回多項式x^2 + 2x - 1在該值處的值。請注意,該函數返回結果是一個泛型函數,且具有基于連續編號的編譯器生成的名稱。


匿名函數的主要用途是將它們傳遞給其他函數,作為一個參數。一個典型的例子是map方法,它對數組中的每個值應用一個函數,并返回一個包含結果值的新數組:

julia> map(x -> x^2 + 2x - 1, [1,3,-1]) 3-element Array{Int64,1}:214-2

接受多個參數的匿名函數,可以被寫為:

(x, y, z) -> 2x + y - z

一個零參數匿名函數被寫為:

()->3

不帶參數的函數可能看起來很奇怪,但對于“延遲”計算很有用。


總結

以上是生活随笔為你收集整理的探索Julia(part10)--自定义函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。