python入門之函數

函數的定義

一、什麼是函數

函數就是一種工具,能夠重複調用。函數

二、爲何要用函數

  • 防止代碼冗餘
  • 代碼可讀性差

三、怎麼用函數

經過def(define)關鍵字定義函數---> 製造工具工具

調用函數 ---> 使用工具code

def 函數名():
    '''
    函數的註釋,描述函數體代碼的功能
    '''
    代碼塊1
    代碼塊2
 
函數名()  # 使用函數
# 定義函數(製造工具)
def index():  # index變量名
    print('你好,函數!')  # 代碼塊
 
index()  # index訪問函數的內存地址,括號是調用的意思

四、函數名的命名規範

函數名的命名規範與變量名同樣內存

五、函數的分類

  • 有參函數
    • def index(user, pwd):
  • 無參函數
    • def index():
  • 空函數
    • def index():
    • pass

六、函數的調用

函數先定義後執行,不調用函數,就不會執行函數體代碼,只會檢測函數體代碼的語法規範性it

index()
 
index(name, pwd)  # 傳入參數執行
 
index(1, index(3, 2))  # 先執行裏面的index

2、return

return:是一個函數結束的標誌,函數體代碼只要執行到return,函數執行結束class

  • 不寫return,默認返回none容器

  • 只寫return,只有結束函數體代碼的效果,返回none變量

  • 寫return none,與只寫return的效果相同數據類型

  • return返回一個值:能夠將返回的結果,當作一個變量值來使用

  • return返回多個值

    • 將返回的多個值,默認存入元組返回
    • 函數的返回值不想被修改
    • 能夠本身指定返回的數據類型

3、函數的參數

3.1 參數的類型

3.1.1 形參

是在函數定義階段就規定的參數,至關於定義變量時的變量名

3.1.2 實參

是在函數調用階段傳入的參數,至關於定義變量時的變量值

def index(a):  # 形參:a至關於變量名,用來接收變量值
    print(a)
 
index(a)  # 實參:至關於變量值,將值傳入形參

3.2 傳參方式

3.2.1 位置參數:

經過位置進行傳參

def index(a, b):
    print(a, b)
 
index(1, 3)  # 位置參數

3.2.2 關鍵字參數

指定關鍵字傳參

def index(a, b):
    print(a, b)
 
index(a=1, b=3)  # 關鍵字參數

3.2.3 位置參數和關鍵字參數混用

  • 位置參數必定要寫在關鍵字參數以前

  • 連用的時候,不要對同一個形參重複賦值

def index(a, b, c, d):
    print(a, b, c, d)
 
index(1, 2, c=3, d=4)  # 位置參數和關鍵字參數混用
# 定義在* 和**之間
# 在給命名關鍵字傳值的時候必定要以關鍵字形式傳遞
# 關鍵字參數必定不能放在位置參數前面
def index(x, y, z, a=1, *args, b, **kwargs):
    print(x, y, z)
    print(args)
    print(a, b)
    print(kwargs)

index(1, 2, 3,354353, 4342, 3213123, b=222, c=333, d=444)

3.2.4 默認參數

默認參數:

  • 在定義函數階段就已經傳入參數
  • 若是在實參的時候傳入了一個新的參數,就會使用新參數
  • 默認參數在傳值的時候,不要將可變類型當作參數傳遞

應用場景:

  • 當參數對應值重複出現的狀況下使用默認參數
def reg(username, password, gender):
    print(f'用戶名:{username} 密碼:{password} 性別:{gender})
 
 
reg('tank', 'dsb', 'male')
reg('jason', 'dsb', 'male')
reg('engon', 'dsb', 'male')
 
 
# 將gender的實參定義爲male
def reg(username, password, gender='male'):
    print(f'用戶名:{username} 密碼:{password} 性別:{gender})
 
 
reg('tank', 'dsb')  # 默認爲male
reg('jason', 'dsb')
reg('engon', 'dsb')
reg('胡晨陽', 'dsb', 'female')  # femal會去修改male,爲femal

4 可變長參數

官方規定使用*args,可是隻要有*就有能夠有變長參數的效果

可變長參數:

  • *args接收全部溢出的位置參數
    • 接收的值均可以被存入一個元組
  • 形參的值前面有*能夠打散傳入的容器類型
    • 打散字典只能返回key
  • **kwargs:接收全部溢出的關鍵字參數
    • 接收的值都被存入一個字典
# 位置參數
def index(a, b, c, d, *args):
    print(a, b, c, d, *args)
 
index(1, 3, 4, 5, 6, 7, 8, *[8, 9])
 
# 關鍵字參數
def index(a, b, c, d, **kwargs):
    print(a, b, c, d, *kwargs)
 
index(1, 3, c=4, d=5, e=6)
相關文章
相關標籤/搜索