Python基礎⑤:函數

1、函數的定義與調用

1)函數的定義與調用:參數+函數體+返回值
  ① 定義

# 定義函數格式
def 函數名(參數):
	函數體
	return 返回值
# 例子:求正方形面積
def area_of_square(length_of_side):
	square_area = pow(legth_of_side,2)
	return square_area

  ② 調用

# 例子:求正方形面積
def area_of_square(length_of_side):
	square_area = pow(legth_of_side,2)
	return square_area
# 調用定義的函數
area = area_of_square(5)

2)參數的傳遞
  ① 位置參數:按照位置順序用實參對形參賦值,實參形參個數一一對應

def function(x,y,z):
	return x,y,z
function(1,2,3) # x=1,y=2,z=3

  ② 關鍵字參數

def function(x,y,z):
	return x,y,z
function(y=1,z=2,x=3) # x=3,y=1,z=2
# 兩個可以混着用,但位置參數必須要在關鍵字參數前面
def function(x,y,z):
	return x,y,z
function(1,z=2,y=3) # x=1,y=3,z=2

  ③ 默認參數:在定義函數階段就給形參賦值

# 默認參數應該設置爲不可變類型(數字、字符串、元組)
# 將z設爲默認參數,值爲3
def function(x,y,z=3):
	return x,y,z
function(y=1,x=3) # x=3,y=1,z=3

  ④ 可選參數:讓參數變成可選的

def name(first_name,last_name,middle,name = None):
	if middle_name:
		return first_name+middle_name+last_name
	else:
		return first_name+last_name
print(name("Cheng","Liu")) # 結果是:"ChengLiu"
print(name("Cheng","Liu","JR"))  # 結果是:"ChengLiuJR"

  ⑤ 可變長參數 *args

def foo(x,y,z,*args):
	print(x,y,z)
	print(args)
foo(1,2,3,4,5,6)  # x=1,y=2,z=3,剩下打包成元組傳給args
foo(1,2,3,[4,5,6])  # x=1,y=2,z=3,剩下打包成元組傳給args
foo(1,2,3,*[4,5,6])  # x=1,y=2,z=3,剩下的打散後打包成元組給args

  ⑥ 可變長參數 **kwargs

def foo(x,y,z,**kwargs):
	print(x,y,z)
	print(kwargs)
foo(1,2,3,a=4,b=5,c=6)  # x=1,y=2,z=3,剩下打包成字典傳給args

3)函數體與變量作用域
  ① 局部變量:在函數內部定義的變量,僅在函數內部起作用
  ② 全局變量:在函數外部或使用global修飾的變量
4)返回值
  ① 單個返回值:就是用return返回
  ② 多個返回值:通過元組的形式

def foo(x=1):
	return 1,x,x**2,x**3
print(foo(3))  # (1,3,9,27)
a,b,c,d = foo(3) # 解包賦值

2、匿名函數

1)定義格式:lambda 變量:函數體
2)常用用法
  ① 列表排序sort()

ls = [(93,88),(79,100),(86,71),(85,85),(76,94)]
ls.sort(key = lambda x:x[1])  # 根據元組第2個元素排序
ls.sort(key = lambda x:x[0]+x[1])  # 根據元組兩個元素之和排序

  ② max()和min()

ls = [(93,88),(79,100),(86,71),(85,85),(76,94)]
n = max(ls,key = lambda x:x[1])
m = min(ls, key = lambda x:x[1])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章