函數:降低編程難度和代碼複用
一:函數的定義
函數是一段代碼的表示
def <函數名>(<參數(零個或多個)>):
<函數體>
return <返回值>
#計算 X!
def function(x): #定義一個函數 function()
s = 1
for i in range(1,x + 1): #for循環計算階乘
s *= i
return s
a = function(10) #輸入實參,調用函數
print(a)
函數定義時,1、指定的參數是一種佔位符。
2、參數是輸入,函數體是處理,結果是輸出(IPO程序設計式)。
函數定義後,不調用不執行。
二:參數
1、參數個數:函數可以有參數,也可以沒有,但必須保留括號。
2、可選參數傳遞:函數定義時可以爲某些參數指定默認值,構成可選參數。
def <函數名>(<非可選參數>, <可選參數>):
<函數體>
return <返回值>
#計算階乘併除以某個數
def function(x,y = 1): #定義一個函數 function(),y爲可選參數
s = 1
for i in range(1,x + 1): #for循環計算階乘
s *= i
return s//y
a = function(10, 5) #輸入實參,調用函數
print(a)
3、可變參數傳遞:函數定義時可以設計可變數量參數,既不確定參數的總數量
def <函數名>(<參數>, *b ):
<函數體>
return <返回值>
#計算n!乘數
def function(n, *b): #*b可變參數
s = 1
for i in range(1, n+1):
s *= i
for item in b:
s *= item #把所有的參數都遍歷一遍
return s
print(function(10, 5))
print(function(10, 3, 5, 8))
4、參數傳遞的兩種方式:函數調用時,參數可以按照位置或名稱方式傳遞。
#計算階乘併除以某個數
def function(x,y = 1):
s = 1
for i in range(1,x + 1):
s *= i
return s//y
a = function(10, 5) #參數按照位置方式傳遞
print(a)
b = function(y = 5, x = 10) #參數按照名稱方式傳遞
print(b)
三:函數的返回值
1、函數的返回值:函數可以有返回值,也可以沒有,可以有return,也可以沒有;return可以傳遞0個返回值,也可以傳遞任意多個返回值。
def function(n, m=1):
s = 1
for i in range(1, n + 1):
s *= i
return s//m, n, m
a, b, c = function(10, 5)
print(a, b, c)
print(function(10,5)) #返回元組類型
四:局部變量和全局變量
1、局部變量和全局變量是不同變量
局部變量是函數內部的佔位符,與全局變量可能重名但不同
函數運算結束後,局部變量被釋放
可以使用global保留字在函數內部使用全局變量
2、局部變量爲組合數據類型且未創建,等同於全局變量
3、使用規則
基本數據類型,無論是否重名,局部變量與全局變量不同
可以通過global保留字在函數內部聲明全局變量
組合數據類型,如果局部變量未真實創建,則是全局變量