1. python中函式定義方法:
def test(x):
"the function definitions"
x+=1
return x
def:定義函式的關鍵字
test:函式名
():內可定義形參
"":文件描述(非必要,但是強烈建議為你的函式新增描述資訊)
x+=1:泛指**塊或程式處理邏輯
return:定義返回值
返回值數=0:返回none
返回值數=1:返回object
返回值數》1:返回tuple
2引數
1.引數的分別:實參(實際的要交給函式的內容)和形參(定義函式的時候它只是乙個形式,只是乙個變數的名)
2.引數可以傳遞多個,多個引數之間用逗號分割。
3.位置引數
站在實參角度:1.按照位置傳值2.按照關鍵字傳值3.位置、關鍵字形式混著用
站在形參角度:位置引數必須傳值
4.動態引數 :*args **kwargs
5.注意引數混合用的順序
位置引數》*args>預設引數》**kwargs
3區域性變數和全域性變數
在子程式中定義的變數稱為區域性變數,在程式的一開始定義的變數稱為全域性變數。
全域性變數作用域是整個程式,區域性變數作用域是定義該變數的子程式。
當全域性變數與區域性變數同名時:
在定義區域性變數的子程式內,區域性變數起作用;在其它地方全域性變數起作用。
python中的閉包從表現形式上定義(解釋)為:如果在乙個內部函式裡,對在外部作用域(但不是在全域性作用域)的變數進行引用,那麼內部函式就被認為是閉包。
def
foo():
... m
=
0
...
def
foo1():
... m
=
1
...
print
m
...
...
print
m
... foo1()
...
print
m
...
>>> foo()
0
1
0
裝飾器=高階函式+函式巢狀+閉包
6迭代器
l
=
[
1
,
2
,
3
]
index
=
0
while
index <
len
(l):
print
(l[index])
index
+
=
1
乙個包含yield關鍵字的函式就是乙個生成器函式。yield可以為我們從函式中返回值,但是yield又不同於return,return的執行意味著程式的結束,呼叫生成器函式不會得到返回的具體的值,而是得到乙個可迭代的物件。每一次獲取這個可迭代物件的值,就能推動函式的執行,獲取新的返回值。直到函式執行結束。
關於next和send分析:
對於普通的生成器,第乙個next呼叫,相當於啟動生成器,會從生成器函式的第一行**開始執行,直到第一次執行完yield語句(第4行)後,跳出生成器函式。
然後第二個next呼叫,進入生成器函式後,從yield語句的下一句語句(第5行)開始執行,然後重新執行到yield語句,執行後,跳出生成器函式,後面再次呼叫next,依次類推。
r=
'here'
for
i
in
xrange
(
3
):
yield
r
r
=
'200 ok'
+
str
(i)
c
=
consumer()
n1
=
c.
next
()
n2
=
c.
next
()
n3
=
c.
next
()
了解了next()如何讓包含yield的函式執行後,我們再來看另外乙個非常重要的函式send(msg)。其實next()和send()在一定意義上作用是相似的,區別是send()可以傳遞yield表示式的值進去,而next()不能傳遞特定的值,只能傳遞none進去。因此,我們可以看做c.next() 和 c.send(none) 作用是一樣的。
需要提醒的是,第一次呼叫時,請使用next()語句或是send(none),不能使用send傳送乙個非none的值,否則會出錯的,因為沒有pythonyield語句來接收這個值。
函式相關課業總結(1)
首先,讓我們來看一下函式定義的語法形式 資料型別函式名 形式參數列 通過以往的學習,我們對於函式的認知僅僅侷限於主函式,運用複雜冗長的主函式來實現相關操作,這樣大大增加了使用空間和時間,經常會出現除錯不通而找不到錯誤在哪的情況,而且寫出來的程式也不美觀。但如果我們將乙個程式拆分,每個函式實現特定的功...
oracle相關總結3 常用函式
1 字串函式 length 字元長度 lentthb 位元組長度 乙個漢字記憶體中占用 2位元組 ltrim rtrim trim 2 截串 substr 表示式,位置,長度 oracle 無左右取串函式,但可以使用變通方式完成。左取串 substr abcdefg 1,3 右取串 substr a...
關於檔案相關的函式總結
file fopen const char fname const char mode fname要開啟的檔名 mode指示檔案的開啟模式 fopen 返回值型別是檔案型別指標int fclose file fp 檔案關閉成功,則返回0,否則返回 1 fclose 可以把緩衝區內的剩餘資料輸出到磁碟...