Python函數(2)函數參數傳遞值傳遞

基本數據類型:整型,浮點型,字符型,布爾類型
引用數據類型:列表,元組,字典,集合,對象

一.基本數據類型作爲函數參數傳入到函數內部

定義一個函數輸出任意一個給定的數據

示例1:
def fun(number):
    print(number)
fun(3)

結果:

3
示例2:
def out_put(x):
    x += 20
    print(x)
x = 20
out_put(x)
print(x)

結果:

40
20

上面的一段代碼中兩個x分別代表實際參數和形式參數,注意函數在調用過程中
的實際參數中的數據 在傳遞給形式參數的過程是一個拷貝的過程,因此在函數內部 對形式參數所做的所有數據操作都不會影響實際參數的數據.

示例3:
jihe = {1,2,3}
def append(data):
    data.add(10)
    print(data)
append(jihe)
print(jihe)

結果:

{10, 1, 2, 3}
{10, 1, 2, 3}

引用數據類型:列表,元組,字典,集合,對象
基本數據類型:整型,浮點型,字符型,布爾類型

二.引用數據類型作爲函數參數傳入到函數內部

引用數據類型作爲函數參數被傳入到函數內部時,在函數內部所做的操作等價於直接對該數據本身做操作
常用的引用數據類型有:列表,元組,字典,集合,對象

示例

定義一個字典,在字典中存儲一個人的名字,同時定義函數完成對該人名的修改

dic = {'name':'小菜菜'}
def change_name(data):
    data['name'] = '魏東亭'
change_name(dic)
print(dic)

結果:

{'name': '魏東亭'}

三.函數作爲函數參數傳入到函數內部

函數作爲函數參數傳入到函數內部,此時傳入函數內部的函數被稱爲回調函數
比如函數B作爲函數A的參數傳入到A內部,在A內部調用函數B,此時B函數被稱爲回調函數
回調函數作用:可以將一些不確定的操作交給使用者來實現,從而實現代碼功能的擴充

示例1
def get_max(num1,num2):
    or_max = True
    if num1 < num2:
        or_max = False
    return or_max

def sort_num(num1,num2,callBack):
    if callBack(num1,num2) is True:
        num1 = num1 ^ num2
        num2 = num1 ^ num2
        num1 = num1 ^ num2
    return (num1,num2)
num1,num2 = sort_num(30,10,get_max)
print(num1,num2)

結果:

10 30
示例2

定義一個函數完成對列表數據的遍歷,並且對每一次的便利結果做任意處理

def map_list(list1,callback):
    list1 = list(list1)
    for i in range(len(list1)):
        item = list1[i]
        result = callback(item)
        if (isinstance(result,str) and len(result) == 0) or result is None:
            list1[i] = None
        else:
            list1[i] = result
    while None in list1:
        list1.remove(None)
    return list1

list1 = [1,2,3,4,5,'aa','bb']
def condition_1(x):
    if isinstance(x,str):
        return None
    else:
        return x*2
list1 = map_list(list1,condition_1)
print(list1)

結果:

[2, 4, 6, 8, 10]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章