在前面提到,函式是可以呼叫的,而且是可以互動的,既然可以呼叫和互動,那麼久需要有乙個函式名,以及函式引數和返回值。這是函式的三個重要元素,其中函式名是必須的,函式引數和返回值是可選的。如果函式只是簡單的執行某段**,並不需要與外部進行互動,那麼函式引數與返回值可以省略。
定義函式要使用def語句。
def greet(name):
return 'hello {}'.format(name)
從上面的**可以看出,函式名是greet。後面是一對圓括號,函式的引數就放在這裡。圓括號有乙個name引數。最後用乙個冒號(:)結尾。這表示函式與if、while、for語句一樣,也是乙個**塊,這就意味著函式內部的**需要用縮排量來與外部**分開。
由於python是動態語言,所以函式引數與返回值都不需要事先指定資料型別,函式引數就直接寫引數名即可,如果函式又多個引數,中間用逗號(,)分隔。如果函式又返回值,直接使用return語句返回即可。return語句可以返回任何東西,乙個值,乙個變數,或是另外乙個函式的返回值,如果函式沒有返回值,可以省略return語句。
將**封裝在函式中後,就可以呼叫函式了。
def
greet
(name)
:return
'hello {}'
.format
(name)
print
(greet(
'python'))
#輸出結果:hello python
print
(greet(
'world'))
#輸出結果:hello world
輸出結果:
hello python
hello world
上面的**呼叫了兩個greet自定義函式,並傳入了兩個完全不同的引數值。
[例 7.1] 本例通過函式對計算斐波那契數列的**進行改進,將這段**封裝在乙個函式中,通過函式引數傳入斐波那契數列長度,然後通過return語句返回計算結果。
#自定義用於計算斐波那契數列的函式
deffibs
(n):
#定義儲存斐波那契數列的初始列表
result =[0
,1]#通過迴圈來計算斐波那契數列,並將計算結果儲存到result列表中
for i in
range
(n -2)
:-2]
+ result[-1
])#使用return返回result的計算結果
return result
#通過while迴圈從控制台不斷輸入斐波那契數列長度,並根據長度計算斐波那契數列的值
while
true
: value =
input
('請輸入乙個斐波那契數列長度:'
)#如果輸入"exit",則退出迴圈
if value ==
'exit'
:break
;#將輸入的字串轉換為整數
n =int(value)
#呼叫fibs自定義函式計算斐波那契數列
print
(fibs(n)
)
輸出結果:
請輸入乙個斐波那契數列長度:10
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
請輸入乙個斐波那契數列長度:15
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
請輸入乙個斐波那契數列長度:exit
Python高階之路 一
一 python基礎語法知識 第一天 1 變數 定義 為了儲存 程式運算過程中的一些中間 結果,為了方便日後呼叫,資料修改 命名規則 1 由字母 數字 下劃線組成 2 不能以數字開頭,不能含有特殊的字元和空格 3 不能以保留字命名 4 不建議以中文命名 5 定義的變數名應該有意義 見名知意 6 駝峰...
python高階學習之路
正規表示式 正規表示式 match函式search函式 match物件 findal函式finditer函式 compile函式 sub函式split函式 正則標誌位和模式 beautifulsoup json模組及jsonpath lxml.etree模組 網路爬蟲 爬取頁面 urllib庫 ur...
Python高階之路 7 5 遞迴
遞迴對於初學者來說是乙個難點,初學者可能需要花一些精力在這上面。其實單從編寫遞迴的方式上來看並不難理解。所謂遞迴,就是在函式內部呼叫自身。在執行過程中,python解析器會利用棧 stack 處理遞迴函式返回的資料。所以遞迴函式的乙個必要條件是要有終止條件,否則棧就會溢位。在這裡並不討論遞迴的底層原...