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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章