python ---------函數


一、為什么要使用函數?

   1.避免代碼重用

   2.提高代碼的可讀性

二、函數的定義與調用

1def  函數名(參數1,參數2)

    ''' 函數注釋'''

    print('函數體')

    return 返回值

  定義:def關鍵字開頭,空格之后接函數名和圓括號,最后還要加一個冒號。

        def是固定的,不能變。

  函數名:函數名是包含字母,數字,下划線的任意組合,但是不能以數字開頭。雖然函數名可以隨便取名,但是一般盡量定義成可以表示函數功能的。

2.函數的調用

     返回值=函數名(參數1,參數2)#記得函數名后面加括號

下面我們先來定義一個求計算字符串長度的函數。假如我們的len()函數現在不能用了,那么我們就需要定義一個函數,求字符串的長度。如果讓我們一次一次的去寫相同的代碼,會顯得很麻煩。這時候我們的函數就上場了。

 1 1.給定一個字符串,調用函數,當他沒有返回值的時候返回Null
 2 def  length():
 3         s='hello world'
 4         length=0
 5         for i in s:
 6                 length+=1
 7         print(length)
 8 print(length())
 9 
10 
11 2.return 必須放在函數里,當函數有返回值的時候,必須用變量接收才會有效果
12 def  length():
13         s='hello world'
14         length=0
15         for i in s:
16                 length+=1
17         return  length
18 print(length())
計算字符串的長度

三、函數的返回值

1.return的作用:結束一個函數的執行

2.首先返回值可以是任意的數據類型。

3.函數可以有返回值:如果有返回值,必須要用變量接收才有效果

   也可以沒有返回值:

  沒有返回值的時候分三種情況:

    1.當不寫return的時候,函數的返回值為None

    2.當只寫一個return的時候,函數的返回值為None

    3.return None的時候,函數的返回值為None(幾乎不用)

4.return返回一個值(一個變量)

5.return返回多個值(多個變量):多個值之間用逗號隔開,以元組的形式返回。

                接收:可以用一個變量接收,也可以用多個變量接收,返回幾個就用幾個變量去接收

1 def  func():
2         a=111
3         b=[1,2,3]
4         c={'a':15,'b':6}
5        #return a#返回一個值
6        #return a,b,c#返回多個值,變量之間按逗號隔開,以元組的形式返回
7 print(func())
函數有一個或多個返回值
 1 1.不寫return時返回None
 2 def  func():
 3     a=111
 4     b=[1,2,3]
 5 
 6 ret=func()
 7 print(ret)
 8 
 9 
10 2.只寫一個return時返回None
11 def  func():
12     a=111
13     b=[1,2,3]
14     return
15 ret=func()
16 print(ret)
17 
18 3.return None的時候返回None
19 def  func():
20     a=111
21     b=[1,2,3]
22     return  None
23 ret=func()
24 print(ret)
函數沒有返回值的函數
1 def func4():
2     print (1111111)
3     return#結束一個函數的執行
4     print (1242451)
5 func4()
舉例說明return的作用
 1 方法一
 2 def func():
 3     list=['hello','egon',11,22]
 4     return list[-1]
 5 
 6 print(func())
 7 
 8 方法二
 9 def func():
10     list=['hello','egon',11,22]
11     return list
12 
13 m,n,k,g=func()#
14 print(g)
定義一個列表,返回列表的最后一個值

四、函數的參數

 

# def fun(s):#參數接受:形式參數,簡稱形參
#     '''
#         計算字符串長度的函數---------函數的功能
#         參數s:接受要計算的字符串--------參數的信息
#         return:要計算字符串長度 ---------返回值得信息
#     '''
#     length=0
#     for i in s:
#         length+=1
#     return length
#
# ret=fun('helloword')#參數傳入:實際參數,簡稱實參
# print(ret)

 


1.實參和形參
形參:是函數定義時候定義的參數
實參:函數調用的時候傳進來的參數
2.傳遞多個參數
可以傳遞多個參數,多個參數之間用逗號隔開。
站在傳參的角度上,調用函數時傳參數有兩種方式:
  1.按照位置傳參數
  2.按照關鍵字傳參數
用法:1.位置參數必須在關鍵字參數的前面
   2.對於一個參數只能賦值一次
 1 def my_max(a,b):#位置參數:按順序定義參數
 2     if a>b:
 3         return a
 4     else:
 5         return b
 6 # 站在傳參的角度上
 7 print(my_max(20,30))
 8 print(my_max(10,20))# 1.按照位置傳參
 9 print(my_max(b=50,a=30))# 2.按照關鍵字傳參
10 print(my_max(10,b=30))#3.位置和關鍵字傳參混搭
傳遞多個參數,實現比大小的功能

3.默認參數

用法:為什么要用默認參數?將變化比較小的值設置成默認參數(比如一個班的男生多,女生就幾個,就可以設置個默認值參數)

定義:默認參數可以不傳,不傳的時候用的就是默認值,如果傳會覆蓋默認值。

   默認的值是在定義函數的時候就已經確定了的

1 def stu_info(name,sex = "male"):
2     """打印學生信息函數,由於班中大部分學生都是男生,
3         所以設置默認參數sex的默認值為'male'
4     """
5     print(name,sex)
6 stu_info('alex')
7 stu_info('海燕','female')
默認參數

默認參數缺陷:默認參數是一個可變數據類型

 1 def  default_param(a,l=[]):
 2         l.append(a)
 3         print(l)
 4 
 5 default_param('alex')
 6 default_param('rgon')
 7 
 8 輸出:['alex']
 9         ['alex', 'egon']
10     
View Code

4.動態參數

按位置傳值多余的參數都由args統一接收,保存成一個元組的形式

按關鍵字傳值接受多個關鍵字參數,由kwargs接收,保存成一個的形式

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的和
*args的應用
 1 def fun(a,b,**kwargs):
 2     print(a,b,kwargs)
 3 
 4 # 按照關鍵字傳參數
 5 fun(a = 10,b = 20,cccc= 30,dddd = 50)#輸出10 20 {'cccc': 30, 'dddd': 50}
 6 
 7 
 8 
 9 
10 
11 def f(a,b,*args,defult=6,**kwargs):
12     #位置參數,*args, 默認參數,**kwargs
13     # print(a,b,args,defult,kwargs)
14     return a,b,args,defult,kwargs
15 
16 #傳參數的時候:必須先按照位置傳參數,再按照關鍵字傳參數
17 print(f(1,2,7,8,ccc=10,der=5))
*kwargs的應用

 

五、小結

 

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

def 函數名(參數1,參數2,*args,默認參數,**kwargs):
        """注釋:函數功能和參數說明"""
        函數體
        ……
        return 返回值

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM