基本數據類型:整型,浮點型,字符型,布爾類型
引用數據類型:列表,元組,字典,集合,對象
一.基本數據類型作爲函數參數傳入到函數內部
定義一個函數輸出任意一個給定的數據
示例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]