1,定義函數(定義任何函數其前面要加def)python
s = '定義函數'
def my_len(): #定義函數
i = 0
for k in s:
i += 1
print(i)
my_len() #函數調用 #>>>4
2,關於函數中的return
1,函數中沒有return
2,函數中有return可是沒有加返回值
當程序運行到return時就會結束,不在繼續運行這個函數
def func():
l = [3,5]
for i in l:
print(i)
if i == 3:
return #函數到這後結束,不會執行下面的,若是換成break,
print('****') #只是結束了for的循環,還會執行函數,所以會執行下面的語句
ret = func() #>>>3
print(ret) #>>>None
3,返回值的3種狀況
1,沒有返回值——>返回None
1.1,不寫return
1.2,只寫return——>結束一個函數的繼續
1.3,return None——>不經常使用
2,返回一個值
2.1,能夠返回任何數據類型
2.2,只要返回就能夠接收
2.3,若是在一個程序中有多個return,那麼只執行第一個
3,返回多個值
3.1,用多個變量接收:有多少返回值就用多少變量接收
3.2,用一個變量接收:獲得的是一個元組
4,參數
4.1,參數分類
4.1.1,沒有參數
1,定義函數和調用函數時括號裏都不寫內容
4.1.2,有一個參數
2,傳什麼就是什麼
4.1.3,有多個參數
3,位置參數
4.2,站在實參的角度上:
4.2.1,按位置傳參
4.2.2,按關鍵字傳參
4.2.3,混着用能夠:可是,必須先按照位置傳參,在按關鍵字傳參,不能給同一變量傳多個值
4.3,站在形參的角度上
4.3.1,位置參數:必須傳,且有幾個參數就傳幾個值
4.3.2,默認參數:能夠不傳,若是不傳就是用默認的參數,若是傳了就用穿的
4.4,調用函數的時候
4.4.1,按位置傳: 直接寫參數的值
4.4.2,按關鍵字: 關鍵字 = 值
4.5,定義函數的時候:
4.5.1,位置參數:直接定義參數
4.5.2,默認參數(關鍵字參數):參數名 = ‘默認的值’
4.5.3,動態參數:能夠接受任意多個參數,參數名前加*
4.5.4,定義的順序:必須先定義位置參數,後定義默認參數
5,動態參數
5.1,只接收位置參數的動態參數,函數
加*的爲位置參數的動態參數,動態參數可接收多個元素,並將接收的元素以元組的形式存放spa
def sum(*args):
n = 0
for i in args: # 由於*args爲動態參數,args元組方式處理
n +=i
return n
print(sum(1,2))
print(sum(1,2,3))
5.2,只接收關鍵字參數的動態參數
加**的參數爲關鍵字參數的動態參數,動態參數能夠接收多個元素,並將接收的元素以字典的形存放
def func(**kwargs):
print(kwargs)
func(a = 1,b = 2,c = 3)
func(a = 1,b = 2)
5.3,動態參數的另外一種傳參方式
def func(*args): #站在形參的角度上,給變量加上*,就是組合全部傳來的值
print(args)
func(1,2,3) #>>>(1, 2, 3)
l = [1,2,3]
func(*l) #>>>(1, 2, 3) #站在形參的角度上,給一個序列加上*,就是將這個序列按順序分解
6,函數的註釋
def func():
'''
這個函數實現了什麼功能
參數1:
參數2:
:return: 返回的什麼
'''
pass