python-函式使用

mu_guang_發表於2020-12-25

1. 定義函式

def my_max(x,y) : 
  if x>y :
    max = x
  else :
    max = y
  return max

def max2(x,y) : 
  if x>y :
    max = x
  else :
    max = y
  return max,x

2. 呼叫函式

a = my_max(1,2)
(a,b) = max2(1,2)

3. 函式引數

3.1必備引數

一般引數,函式呼叫時必須寫上

3.2預設引數

呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。
def max(a,b=2)

3.3不定長引數

def max(a,*b) :
for n in b :

3.4關鍵字引數

指函式呼叫時,顯性指出傳參的關鍵字,並賦予value
函式呼叫:person(‘Bob’, 35, city=‘Beijing’)

3.5命名關鍵字引數

def person(name, age, *, city, job):
print(name, age, city, job)
person(‘Jack’, 24, city=‘Beijing’, job=‘Engineer’)

4. 引數傳遞

python 函式的引數傳遞:

不可變型別:類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的物件,不會影響 a 本身。

可變型別:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

5. 匿名函式

匿名函式
python 使用 lambda 來建立匿名函式。

  • lambda只是一個表示式,函式體比def簡單很多。
  • lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
  • lambda函式擁有自己的名稱空間,且不能訪問自有引數列表之外或全域性名稱空間裡的引數。
  • 雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。

lambda [arg1 [,arg2,…argn]]:expression

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 可寫函式說明
sum = lambda arg1, arg2: arg1 + arg2
 
# 呼叫sum函式
print "相加後的值為 : ", sum( 10, 20 )
print "相加後的值為 : ", sum( 20, 20 )

參考連結:https://www.runoob.com/python/python-functions.html

相關文章