函式的高階知識

2021-10-06 07:11:01 字數 3162 閱讀 5319

四、元組和字典的拆包(了解)

五、函式的遞迴

def

demo

(num,num_list)

:print

("函式開始"

)# num = num + num

num += num

# num_list = num_list + num_list

# 列表變數使用 + 不會做相加在賦值的操作

# 本質上是在呼叫列表的 extend 方法

num_list += num_list

# num_list.extend(num_list)

print

(num)

print

(num_list)

print

("函式完成"

)gl_num =

9gl_list =[1

,2,3

]demo(gl_num,gl_list)

print

(gl_num)

print

(gl_list)

def

print_info

(name, gender=

true):

""" :param name: 班上同學的姓名

:param gender: true 男生 false 女生

"""gender_text =

"男生"

ifnot gender:

gender_text =

"女生"

print

("%s 是 %s"

%(name,gender_text)

)# 加入班上同學男生居多

print_info(

"小明"

)print_info(

"小美"

,false

)

注意事項:

預設引數的定義位置

必須保證帶有預設值的預設引數在引數列表末尾

所以以下定義是錯誤的!

def

print_info

(name, gender =

true

, title)

呼叫帶有多個預設引數的函式

呼叫函式時,如果有多個預設引數需要指定引數名,這樣直譯器才能夠知道引數的對應關係!

一般在給多值引數命名時,習慣使用以下兩個名字

argsarguments的縮寫,有變數的含義

kwkeyword的縮寫,kwargs可以記憶鍵值對引數

def

demo

(num,

*args,

**kwargs)

:print

(num)

print

(args)

print

(kwargs)

demo(1,

2,3,

4,5, name=

"小明"

, age=

18, gender=

true

)

就可以使用拆包,簡化引數的傳遞,拆包的方式是:

def

demo

(*args,

**kwargs)

:print

(args)

print

(kwargs)

# 需要將乙個元組變數/字典變數傳遞給函式對應的引數

gl_nums =(1

,2,3

)gl_dict =

# 會把 num_tuple 和 dict 作為元組傳遞個 args

# demo(gl_nums, gl_dict)

# 拆包語法,簡化元組變數/字典變數的傳遞

demo(

*gl_nums,

**gl_dict)

特點**特點函式內部的**是相同的,只是針對引數不同,處理的結果不同引數滿足乙個條件時,函式不再執行

這個非常重要,通常被稱為遞迴的出口,否則會出現死迴圈

示例**

def

sum_numbers

(num)

:print

(num)

# 遞迴的出口很重要,否則會出現死迴圈

if num ==1:

return

sum_numbers(num -1)

sum_numbers(

3)

需求*定義乙個函式sum_numbers能夠接收乙個num的整數引數

計算 1 + 2 + … num 的結果

**如下:

def

sum_numbers

(num)

:# 1.出口

if num ==1:

return

1# 2.數字的累加 num + (1...num -1)

# 假設 sum_numbers 能夠完成 1...num - 1 的累加

temp = sum_numbers(num -1)

# 函式內部的核心演算法就是 兩個數字的相加

網路知識總結 (五)高階I O函式

pipe 函式用於建立乙個管道,以實現程序間通訊。include int pipe int fd 2 引數是乙個包含兩個 int 型整數的陣列指標。成功 返回 0 並將一對開啟的檔案描述符值傳入陣列中。失敗 返回 1,並設定errno。通過 pipe 函式建立的兩個檔案描述符 fd 0 和 fd 1...

JS高階教程知識整理 07函式中的this

1.this是什麼 任何函式本質上都是通過某個物件來呼叫的,如果沒有直接指定就是window 所有函式內部都有乙個變數this 它的值是呼叫函式的當前物件 2.如何確定this的值 test window new test 新建立的物件 p.test p p.call obj obj 實現 lang...

函式的高階

def func a1,a2,a3 print a1,a2,a3 func 1,3,4 a1 1,a2 3,a3 4def func a1,a2 print a1,a2 func a2 99,a1 2 關鍵字傳引數和位置傳參可以混合使用 位置傳入的引數 關鍵字引數在後 總引數個數 def func1...