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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

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

使用Julia-1.1.1



自定義函數


元祖


Julia有一個稱為元組的內置數據結構,它與函數參數和返回值密切相關。元組是一個固定長度的容器,可以保存任何值,但不能被修改(它是不可變的),元組由逗號和括號組成,可以通過索引訪問:

julia> (1,2+1) (1, 3)julia> (1,) (1,)julia> x = (1, "Hello", 3.14) (1, "Hello", 3.14)julia> x[2] "Hello"

注意,長度為1的元組必須使用逗號(1,)來編寫,因為(1)只是一個帶括號的值。()表示空(長度為0)元組。


命名元祖


元組的組件可以選擇命名,在這種情況下,一個命名的元組被構造:

julia> a = (x = 1, y = 2) (x = 1, y = 2)julia> a.y 2

除了字段可以通過名稱使用點語法訪問之外(x.a),命名元組與元組非常相似。


多返回值


在Julia中,返回一個元組來模擬返回多個值,可以在不需要圓括號的情況下創建和銷毀元組,從而提供返回多個值而不是單個元組值的錯覺,例如,下面的函數返回一對值:

julia> function h1(a, b)a*b, a+bend;julia> h1(2,3) (6, 5)julia> x, y = h1(3, 4);julia> x 12julia> y 7

可變參數函數


編寫帶有任意數量參數的函數通常很方便,這樣的函數傳統上稱為“varargs”函數,是“可變參數數”的縮寫,我們可以在最后一個參數后面加上一個省略號來定義一個可變參數函數:

julia> h2(a, b, x...) = (a, b, x) h2 (generic function with 1 method)julia> h2(1, 2, 3) (1, 2, (3,))julia> h2(1, 2) (1, 2, ())julia> h2(1, 2, 4, 5) (1, 2, (4, 5))

元祖中包含的值作為單獨的參數傳到函數中,要做到這點,我們需要使用省略號...:

julia> x = (4, 5, 6) (4, 5, 6)julia> h2(1, 2, x) (1, 2, ((4, 5, 6),))julia> h2(1, 2, x...) (1, 2, (4, 5, 6))julia> h2(1, x...) (1, 4, (5, 6))julia> h2(x...) (4, 5, (6,))

此外,插入函數調用的可迭代對象不必要是元組:

julia> x = [3, 4, 5] 3-element Array{Int64,1}:345julia> h2(1, 2, x...) (1, 2, (3, 4, 5))julia> h2(x...) (3, 4, (5,))

Evaluation Scope of Default Values


當計算可選參數和關鍵字參數默認表達式時,范圍內只有前面的參數,例如,給出如下定義:

function f(x, a=b, b=1)### end

a=b中的b指的是外部范圍中的b,而不是后面的參數b。


Do-Block


將函數作為參數傳遞給其他函數是一種功能強大的技術,但其語法并不方便,當匿名函數需要多行時,這樣的調用尤其難以編寫,舉一個例子:

map(x->beginif x < 0 && iseven(x)return 0elseif x == 0return 1elsereturn xendend,[A, B, C])

Julia提供了一個保留字do,重寫這個代碼:

map([A, B, C]) do xif x < 0 && iseven(x)return 0elseif x == 0return 1elsereturn xend end

do x語法創建一個帶有參數x的匿名函數,并將其作為要映射的第一個參數傳遞。類似地,do a,b將創建一個雙參數匿名函數,而普通的do將聲明形式為()->…的匿名函數

這些參數的初始化方式取決于“外部”函數,在這里,map將按照順序,將x設置為A、B、C,并對每個函數調用匿名函數,正如語法映射中所發生的那樣(func, [A, B, C])


這種語法使得函數有效擴展語言變得更加容易,因為調用起來就像普通的代碼塊,例如,do在open函數中的用法,確保打開的文件最終關閉:

open("outfile", "w") do iowrite(io, data) end

和其他內部函數一樣,do可以從作用域(enclosing scope)中“捕獲”變量,例如,在open…do中變量data是從外部范圍捕獲的。


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

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

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