Python函式引數和返回值
阿新 • • 發佈:2018-11-04
- 函式引數和返回值的作用
函式:封裝功能獨立的程式碼,在需要時通過函式名被呼叫
引數:外界希望在函式內部處理的資料
返回值:函式完成工作後,給呼叫者的一個結果
函式根據有無引數和返回值,可以相互結合,共有4種組合形式
1.無引數,無返回值
2.無引數,有返回值
3.有引數,無返回值
4.有引數,有返回值
定義函式時,是否接收引數,或是否返回結果,根據實際的功能需求決定
1.如果函式內部處理的資料不確定,就可以將外界的資料以引數傳遞到函式內部
2.如果希望一個函式執行完成後,向外界彙報執行結果, 就可以增加函式的返回值
- 函式返回值(進階)
-
返回多個結果
在函式中使用return關鍵字可以返回結果
那麼如何讓函式執行後返回多個結果?def test(): print('第一名同學是...') name1 = 'zhangsan' print('第二名同學是...') name2 = 'lisi' ### 元組可以包含多個數據,使用元組讓函式一次返回多個值 ### 如果函式返回的型別是元組,小括號可以省略 ### return (name1,name2) return name1,name2 ## 函式返回一個元組,包含name1和name2的值 name = test() ## name接收函式返回值 name資料型別是元組 print(name)
函式返回型別是元組,同時希望單獨的處理元組中的元素,使用多個變數,一次接收函式的返回結果
比如,我想單獨顯示同學1或同學2,那怎麼編寫呢?我們新增以下程式碼gl_name1,gl_name2 = test() ## 使用多個變數一次接收函式的返回結果 print(gl_name1) ## 注意:多變數接收結果時,變數的個數應該 print(gl_name2) ## 和元組中元素的個數保持一致
-
面試題- -交換數字
a = 6 b = 100 # python 專有方法;等號右邊是一個元組,將小括號省略 a, b = b, a
- 函式引數(進階)
-
函式內部引數賦值不影響外部實參
def test(num, num_list): print('函式內部程式碼') num = 100 ## 函式內參數 num_list = [1, 2, 3] ## 函式內參數 print(num) print(num_list) print('函式執行完成') gl_num = 99 gl_list = [4, 5, 6] test(gl_num, gl_list) print(gl_num) print(gl_list) ##################### 函式內部程式碼 100 [1, 2, 3] 函式執行完成 99 ## 不影響外部引數num [4, 5, 6] ## 不影響外部引數num_list
-
修改內部引數會影響外部實參
若傳遞的引數是可變型別,在函式內部,使用方法修改資料的內容,同樣會影響到外部的資料def test(num_list): print('函式內部') num_list.append(9) ## 使用.append()方法會改變外部引數資料 print(num_list) print('函式完成') gl_list = [1,2,3] test(gl_list) print(gl_list) ###################### 函式內部 [1,2,3,9] 執行完成 [1,2,3,9]
-
面試題- - +=
def test(num, num_list): print('函式內部') num += num num_list += num_list ## 列表變數呼叫"+=" # num_list.extend(num_list) ## 本質上是在執行列表變數的extend方法 print(num) print(num_list) print('函式完成') gl_num = 9 gl_list = [1,2,3] test(gl_num, gl_list) print(gl_num) print(gl_list) ######################## 函式內部 18 [1, 2, 3, 1, 2, 3] 函式完成 9 ## 整型,字元的'+='不會影響外部實參 [1, 2, 3, 1, 2, 3] ## 函式內部列表的'+='影響了外部列表實參,等同於使用方法extend()
-
指定預設引數
定義函式時,給某個引數指定一個預設值,具有預設值得引數就叫預設引數(也叫預設引數)
呼叫函式時,如果沒有傳入預設引數的值,則在函式內部使用該預設引數的預設值
將常見值設定為引數預設值,達到簡化函式的呼叫,如:def print_info(name, sex = True): ## 預設引數sex sex_text = '男生' if not sex: ## 指定sex值為False時,執行該行命令 sex_text = '女生' print('%s 是 %s' % (name, sex_text)) print_info('小明') print_info('小嫣', False) ########################## 小明是男生 小嫣是女生
-
預設函式注意事項
1 .預設引數定義位置: 必須在形參列末尾def print_info(name, title, sex=True): ## sex預設引數必須在引數列末尾
2 .呼叫多個預設引數的函式:呼叫時,必須指定引數名
def print_info(name, title='doc', sex=True): sex_text = '男生' if not sex: sex_text = '女生' print('%s%s是%s' % (title, name, sex_text)) print_info('小明', title='dri', sex=True) ## 正確寫法 print_info('小嫣', False) ## 錯誤寫法 ############################### dir小明是男生 False小嫣是一個男生 ## 因呼叫時,第二個引數Flase沒指定傳給誰,就預設傳給了title