基本数据类型:整型,浮点型,字符型,布尔类型
引用数据类型:列表,元组,字典,集合,对象
一.基本数据类型作为函数参数传入到函数内部
定义一个函数输出任意一个给定的数据
示例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]