1.5.1 Python函式初識

花姐毛毛腿發表於2019-01-19

一、為什麼要使用函式?

1,避免程式碼重用 2,提高程式碼的可讀性

二、函式的定義與呼叫

1,函式定義:

def  func():
	''' 函式註釋'''
	print('函式體')
	return 返回值
複製程式碼

定義:def關鍵字開頭,空格之後接函式名和圓括號,最後還要加一個冒號。 def是固定的,不能變。 函式名:函式名是包含字母,數字,下劃線的任意組合,但是不能以數字開頭。雖然函式名可以隨便取名,但是一般儘量定義成可以表示函式功能的。 2,函式的呼叫 返回值=函式名(引數1,引數2)#記得函式名後面加括號 下面我們先來定義一個求計算字串長度的函式。假如我們的len()函式現在不能用了,那麼我們就需要定義一個函式,求字串的長度。如果讓我們一次一次的去寫相同的程式碼,會顯得很麻煩。這時候我們的函式就上場了。

## 1.給定一個字串,呼叫函式,當他沒有返回值的時候返回Null
def  length():
        s='hello world'
        length=0
        for i in s:
                length+=1
        print(length)
print(length())
複製程式碼
## 2.return 必須放在函式裡,當函式有返回值的時候,必須用變數接收才會有效果
def  length():
        s='hello world'
        length=0
        for i in s:
                length+=1
        return  length
print(length())

複製程式碼

三、函式的返回值

1.return的作用:結束一個函式的執行 2.首先返回值可以是任意的資料型別。 3.函式可以有返回值:如果有返回值,必須要用變數接收才有效果 也可以沒有返回值:   沒有返回值的時候分三種情況:     1.當不寫return的時候,函式的返回值為None     2.當只寫一個return的時候,函式的返回值為None     3.return None的時候,函式的返回值為None(幾乎不用) 4.return返回一個值(一個變數) 5.return返回多個值(多個變數):多個值之間用逗號隔開,以元組的形式返回。 接收:可以用一個變數接收,也可以用多個變數接收,返回幾個就用幾個變數去接收 函式有一個或多個返回值:

def  func():
        a=111
        b=[1,2,3]
        c={'a':15,'b':6}
       #return a#返回一個值
       #return a,b,c#返回多個值,變數之間按逗號隔開,以元組的形式返回
print(func())


複製程式碼

函式沒有返回值的函式

#1.不寫return時返回None
def  func():
    a=111
    b=[1,2,3]

ret=func()
print(ret)
複製程式碼

#2.只寫一個return時返回None
def  func():
    a=111
    b=[1,2,3]
    return
ret=func()
print(ret)
複製程式碼
#3.return None的時候返回None
def  func():
    a=111
    b=[1,2,3]
    return  None
ret=func()
print(ret)


複製程式碼

定義一個列表,返回列表的最後一個值

#方法一
def func():
    list=['hello','egon',11,22]
    return list[-1]
print(func())
複製程式碼
#方法二
def func():
    list=['hello','egon',11,22]
    return list
m,n,k,g=func()#
print(g)
複製程式碼

四、函式的引數

1.實參和形參 形參:是函式定義時候定義的引數 實參:函式呼叫的時候傳進來的引數 2.傳遞多個引數 可以傳遞多個引數,多個引數之間用逗號隔開。 站在傳參的角度上,呼叫函式時傳引數有兩種方式:   1.按照位置傳引數   2.按照關鍵字傳引數 用法:1.位置引數必須在關鍵字引數的前面    2.對於一個引數只能賦值一次

 def fun(s):#引數接受:形式引數,簡稱形參
     '''
         計算字串長度的函式---------函式的功能
         引數s:接受要計算的字串--------引數的資訊
         return:要計算字串長度 ---------返回值得資訊
     '''
     length=0
     for i in s:
         length+=1
     return length

 ret=fun('helloword')#引數傳入:實際引數,簡稱實參
 print(ret)
複製程式碼

傳遞多個引數,實現比大小的功能

def my_max(a,b):#位置引數:按順序定義引數
    if a>b:
        return a
    else:
        return b
## 站在傳參的角度上
print(my_max(20,30))
print(my_max(10,20))## 1.按照位置傳參
print(my_max(b=50,a=30))## 2.按照關鍵字傳參
print(my_max(10,b=30))#3.位置和關鍵字傳參混搭
複製程式碼

3.預設引數

用法:為什麼要用預設引數?將變化比較小的值設定成預設引數(比如一個班的男生多,女生就幾個,就可以設定個預設值引數) 定義:預設引數可以不傳,不傳的時候用的就是預設值,如果傳會覆蓋預設值。    預設的值是在定義函式的時候就已經確定了的 預設引數

def stu_info(name,sex = "male"):
    """列印學生資訊函式,由於班中大部分學生都是男生,
        所以設定預設引數sex的預設值為'male'
    """
    print(name,sex)
stu_info('alex')
stu_info('毛腿','female')
複製程式碼

預設引數缺陷:預設引數是一個可變資料型別

def  default_param(a,l=[]):
        l.append(a)
        print(l)
default_param('alex')
default_param('rgon')

輸出:['alex']
        ['alex', 'egon']
複製程式碼

4.動態引數

按位置傳值多餘的引數都由args統一接收,儲存成一個元組的形式 按關鍵字傳值接受多個關鍵字引數,由kwargs接收,儲存成一個典的形式 *args的應用

1 def fun(a,b,*args):
2     sum=a+b
3     for i in args:
4            sum+=i
5     return sum
6 print(fun(1,5,6,4))#輸出1+5+6+4的和
複製程式碼

*kwargs的應用

def fun(a,b,**kwargs):
    print(a,b,kwargs)

## 按照關鍵字傳引數
fun(a = 10,b = 20,cccc= 30,dddd = 50)#輸出10 20 {'cccc': 30, 'dddd': 50}

def f(a,b,*args,defult=6,**kwargs):
    ## 位置引數,*args, 預設引數,**kwargs
    print(a,b,args,defult,kwargs)
    return a,b,args,defult,kwargs

#傳引數的時候:必須先按照位置傳引數,再按照關鍵字傳引數
print(f(1,2,7,8,ccc=10,der=5))
複製程式碼

五、小結

1.定義:def 關鍵詞開頭,空格之後接函式名稱和圓括號()。 2.引數:圓括號用來接收引數。若傳入多個引數,引數之間用逗號分割。     引數可以定義多個,也可以不定義。     引數有很多種,如果涉及到多種引數的定義,應始終遵循位置引數、*args、預設引數、**kwargs順序定義。     如上述定義過程中某引數型別預設,其他引數依舊遵循上述排序 3.註釋:函式的第一行語句應該新增註釋。 4.函式體:函式內容以冒號起始,並且縮排。 5.返回值:return [表示式] 結束函式。不帶表示式的return相當於返回 None

def 函式名(引數1,引數2,*args,預設引數,**kwargs): """註釋:函式功能和引數說明""" 函式體 …… return 返回值

相關文章