python学习之旅(8)①定义函数和传递信息 ②关键字参数 ③默认参数 ④收集参数 ⑤局部变量和全局变量 ⑥global函数 ⑦内嵌函数 ⑧闭包 ⑨lambda函数 ⑩map函数
①定义函数和传递信息
def greet_user(name,words): (name是形参)
"""显示简单的问候语""" (提供注释)
print(name+'问候'+words)
greet_user('你','我') 得 (“你”是实参)
你问候我
②关键字参数(将实参与形参相对应,不必考虑顺序)
def greet_user(name,words):
"""显示简单的问候语"""
print(name+'问候'+words)
greet_user(name='我',words='你')得
我问候你
③默认参数
def greet_user(name='我',words='你'):
"""显示简单的问候语"""
print(name+'问候'+words)
greet_user()
greet_user('你妈')
greet_user('你','你妈')得
我问候你
你妈问候你
你问候你妈
④收集参数
def greet_user(*name):
print('参数的长度是:'+str(len(name)))
print(name)
print(name[-2])
greet_user('你','我','他')得
参数的长度是:3
('你', '我', '他')
我
def greet_user(*name,num=8):
print('参数的长度是:'+str(len(name)),num)
print(name)
print(name[-2])
greet_user('你','我','他',5)得 (实参若由逗号隔开,会被算入元组中,单独分开需设置为关键字函数)
参数的长度是:4 8
('你', '我', '他', 5)
他
def greet_user(*name,num=8):
print('参数的长度是:'+str(len(name)),num)
print(name)
print(name[-2])
greet_user('你','我','他',num=5)得
参数的长度是:3 5
('你', '我', '他')
我
⑤局部变量和全局变量
def discount(for_grade,rate):
last_grade=for_grade*rate
rate=0.35 (函数中的变量为局部变量,如'final_grade',在函数外不可打印。
print('修改',rate) 在函数中可以修改全局变量,但本质上是创建一个新的名字相同的变量,与函数外定义的互不影响)
print("最终成绩为:",final_grade)
str_grade=float(input('请输入预估成绩'))
rate=float(input('请输入折算率'))
final_grade=discount(str_grade,rate)
print(rate)得 (在函数外不可以打印局部变量'last_grade',会报错无改定义,本质是函数使用完后被删除)
请输入预估成绩100
请输入折算率0.8
修改 0.35
最终成绩为: 80.0
0.8
⑥global函数(将函数中的局部变量转化为全局变量)
count=5
def number():
global count
count=100
number()
print(count)得
100
⑦内嵌函数(只能在大的函数中使用)
def number_1():
print(1)
def number_2():
print(2)
number_2()
number_1() 得
1
2
⑧闭包(就是能够读取其他函数内部变量的函数,函数中的函数)
def number_1(x):
def number_2(y):
return x*y
return number_2
number_1(3,5)得
15
def number_1():
x=5
def number_2(): (nonlocal函数在此中的作用与gobal类似,可让内部函数使用外部函数的变量)
nonlocal x
return 2+x
return number_2
number_1()得
7
⑨lambda函数
g=lambda x,y:x+y+7
g(2,3)得
12
⑩filter函数(筛选作用:筛选出不符合条件的元素)
list(filter(lambda x:x%2,range(10)))得 (此处筛选条件为奇数)
【1,3,5,7,9】
⑩map函数(映射关系)
list(map(lambda x:x*2,range(10)))得
【1,2,4,6,8,10,12,14,16,18,20】
浙公网安备 33010602011771号