函式的引數列表

2022-08-02 01:45:12 字數 3210 閱讀 4488

今日內容

1. 函式的引數

2. 函式物件 -- 函式名  * * * *重點!

3. 函式 的巢狀呼叫

1. 形參與實參:

函式介紹:

1.1  函式為什麼要有引數: 因為內部的函式體需要外部的資料

1.2  怎麼定義函式的引數,在定義函式階段,函式名後面()中來定義函式的引數

1.3  怎麼使用函式的引數,在函式體中用定義的引數名直接使用

1.4 實參:  有實際意義的引數

-----在函式呼叫的時候,從 () 中傳入的引數

1.5  形參: 引數本身沒有意義,有了實參賦予引數後,該形參就具備了意義

-----補充:有預設值的形參,在沒有被實參賦值,具備的就是自身的意義,返回的是預設值,但是一旦被實參賦值,它的意義就等同與實參

1.6 形參範圍:def add (n1, n2):# 形參n1 ,n2 在沒有被實參賦值時,沒有實際意義,被實參所賦值,就被賦予了實參的意義

return n1 + n2

1.7  實參範圍:

print(add('a','b'))  # 實際的字串

print(add(10,20)) # 實際的數字

a = 100

b = 200

print(add(a,b)) # 存放實際數字的變數

2. 形參是對實參的值拷貝

2.1 形參與實參可以重名,但代表的是兩個不同的變數

2.2  不可變型別,形參發生重指向,實參不變

def fn(num):

print('數字1>>>:',num) # 此處為 10

num = 20

print('數字2>>>:',num) # 此處為20

num = 10

fn(num)

print('數字3>>>:',num) # 此處為10

2.3  可變型別,形參發生值的內部變化,實參變,兩個指向的是同乙個位址

3. 實參的分類

實參分為:1 .位置 實參   2. 關鍵字 實參

def fn(a,b):

print(a,b)

# 拿實際值進行傳參

fn(10,20) # 10 ==> a | 20 ===> b

拿位置 實參 進行傳參:需要知道的是,形參 與 實參 的位置一一對應。比如第一號位的 實參,一定是傳給一號位的 形參 的

a =100

b =200

fn(a,b) # a:100 ==>a | b:200 ==> b

fn(b,a) # a:200 ==>a | b:100 ==> b

拿關鍵字實參進行傳參:指名道姓進行傳參 -------實參 指名道姓 形參

例如:明確的:形參名目前位 a 和 b

fn(a = 1000,b = 2000)  # a:1000 ==> a | b:2000 ==>b

fn(b = 2000,a = 1000) # b:2000 ==>b | a:1000 ==>a

a = 666

b = 888

# 前面是形參名,後面是傳遞的實參名

fn(a=a,b=b) # a:666 ==> a | b:888==> b

總結:1 . 位置實參: 一定按照位置,且個數要一一對應進行傳參

2 . 關鍵字實參:指名道姓進行傳參,個數一致位置可以改變進行傳參

3. 實參組合傳參規則:必須先傳位置實參,再傳關鍵字實參

4 .形參的分類

六大分類:

4.1 無值位置形參 (位置形參) :可以被位置與關鍵字來進行傳參,它必須傳值,不傳值會報錯

4. 2 有值位置形參 (預設形參) :可以被位置與關鍵字實參來進行傳參,可以不用傳參,來採用它的預設值

4. 3  可變長位置形參:可以接收前兩個沒有接收完的位置引數,可以接受的個數為 0 ~ n 個,如果不傳入引數會返回乙個空元祖 (它會用乙個元祖來包裹返回的值)

4. 4 無值關鍵字形參:只能由關鍵字實參來進行傳參,必須傳值,不傳值會報錯

4 .5 有值關鍵字形參:只能由關鍵字實參來進行傳參,也可以不傳參,來採用它的預設值

4. 6  可變長關鍵字形參:接收 第 4 和第 5 點沒有接收完的關鍵字實參,接受的個數可以為 0 ~ n 個,如果不傳入,返回的是乙個空字典 ( 它會用乙個元祖來包裹返回的值) 

宣告順序:

4. 7 位置形參: a --> 預設形參:b ---> 可變長位置形參:args --->有無預設值關鍵字形參:c,d,e --->可邊長關鍵字形參:kwargs

def fn ( a, b=10, *args, c, d=20, e, **kwargs ) :pass

需要注意的地方:

4. 8 可變長位置形參只能接收位置實參,想要被附上值,前面的有值位置形參的預設值就變的沒有意義了

4. 9 args與kwargs是可變長形參的變數名,所以可以自定義,但是一般都會約定使用這兩個來表示

4. 10 常出現的組合:

def f1(*args, **kwargs): pass

def f2(a, b=10, **kwargs): pass

def f3(a, *args, **kwargs): pass

def f4(a, *, x, **kwargs): pass

def f5(a, *args, x, **kwargs): pass

4. 11 使用法則:

1. 所有位置形參全部採用位置實參進行傳值

2. 所有關鍵字形參全部採用關鍵字實參進行傳值

3. 不管位置還是關鍵字形參,全部按照順序進行傳參

打散機制

```python

def fn(*args, **kwargs):

print(args)

print(kwargs)

t = (1, 2, 3)

dic =

# *單列容器 會打散單列容器

# **雙列容器 會打散雙列容器

fn(1, 2, 3, a=100, b=200, c=300) # (1, 2, 3)

fn(*t, **dic) # (1, 2, 3)

fn(*(1, 2, 3), **) # (1, 2, 3)

# 字串也可以被打散

fn(*'abc') # ('a', 'b', 'c') {}

print(*'abc') # a b c

變長引數列表函式

可變引數列表 標頭檔案提供了遍歷未知數目和型別的函式引數表的功能。該標頭檔案的實現因不同的機器而不同,但提供的介面是一致的。假定函式 f 帶有可變數目的實際引數,lastarg 是它的最後乙個命名的形式引數 引數列表必須至少包括乙個命名引數 那麼,在函式 f 內宣告乙個型別為 va list 的變數...

變長引數列表函式

可變引數列表 標頭檔案提供了遍歷未知數目和型別的函式引數表的功能。該標頭檔案的實現因不同的機器而不同,但提供的介面是一致的。假定函式 f 帶有可變數目的實際引數,lastarg 是它的最後乙個命名的形式引數 引數列表必須至少包括乙個命名引數 那麼,在函式 f 內宣告乙個型別為 va list 的變數...

php函式引數列表

1.直接傳值 function fun arg1 2.傳引用 function fun arg1 1,arg2 2 一定程度上可以模擬函式過載。同時還要注意任何預設引數一定要放在非預設引數的右邊,也就是說fun arg1 1,arg2 這個函式原型是錯誤的。4.引數為陣列 function fun ...