2021年4月18日Python学习 MOOC南开大学 第3章
2021-04-18 本文已影响0人
爱生活的越仔
一、得到学习
罗胖精选
什么是最重要的底层通用能力?
语文是什么?或者说,语言的艺术是什么?
第一个方面是感受,包括听、读、观察和理解。
第二个方面是表达,包括说、写、唱、表述和表演。
二、今天报名了学堂在线的疾风计划,花钱买知识,充实自己,加油!
三、Python学习 MOOC南开大学
第3章课后练习:https://www.icourse163.org/learn/NKU-1205696807?tid=1463259461#/learn/ojhw?id=1237106360
3-04不定长参数
def StudentInfo1(name, *args): #定义函数StudentInfo1
print('姓名:', name, ',其他:', args)
def StudentInfo2(name, **args): #定义函数StudentInfo2
print('姓名:', name, ',其他:', args)
def StudentInfo3(name, *args, country='中国'): #定义函数StudentInfo3
print('姓名:', name, ',国家:', country, ',其他:', args)
StudentInfo1('李晓明', '良好', '中国')
StudentInfo2('李晓明', 中文水平='良好', 国家='中国')
StudentInfo3('李晓明', 19, '良好')
StudentInfo3('大卫', 19, '良好', country='美国')#关键字参数必须
3-5拆分参数列表
print("3-5拆分参数列表")
def SumVal(*args): #定义函数SumVal
sum=0
for i in args:
sum+=i
print('求和结果为:',sum)
ls=[3,5.2,7,1]
SumVal(*ls)
print("3-5字典拆分结果作为函数关键字参数示例")
def StudentInfo(name,chineselevel,country):#定义函数StudentInfo
print('姓名:%s,中文水平:%s,国家: %s' % (name, chineselevel, country))
d = {'country': '中国', 'chineselevel': '良好', 'name': '李晓明'}
StudentInfo(**d)
3-6返回值
print("3-6返回值")
def GetList():
return [1,2,3]
def GetTuple():
return (1,2,3)
def GetElements():
return 1,2,3#返回3个数值数据,实际上会将这3个数据封 装成一个元组返回
print(type(GetList()))
print(GetList())
print(type(GetTuple()))
print(GetTuple())
print(type(GetElements()))
print(GetElements())
3-11猴子补丁
print("3-11猴子补丁")
def Sum(a,b): #定义函数Sum
print('Sum函数被调用!') #通过输出信息以知道哪个函数被调用
return a+b #将a和b的求和结果返回
def NewSum(*args): #定义函数NewSum
print('NewSum函数被调用!') #通过输出信息以知道哪个函数被调用
s=0 #s用于保存求和结果,初始赋为0
for i in args: #i取传入的每一个参数值
s+=i #将i加到s上
return s #将保存求和结果的s返回
print(Sum(1,2))
Sum=NewSum #将NewSum赋给Sum,后面再调用Sum函数,实际上 #就是执行NewSum函数
print(Sum(1,2,3,4,5)) #调用Sum函数(实际是执行NewSum)计算1至 #5的和并输出
3.12变量的作用域和局部变量
print("3.12变量的作用域和局部变量")
def LocalVar1(x): #定义函数LocalVar1,形参x是局部变量
print('LocalVar1中x的值为:',x) #输出x
x=100 #将x的值修改为100
print('LocalVar1中x修改后的值为:',x) #输出x
#print('LocalVar1中y的值为:',y) #取消注释后,该行代码报错
y=20 #定义局部变量y,将其赋值为20
print('LocalVar1中y的值为:',y) #输出y
def LocalVar2(): #定义函数LocalVar2
x=10 #定义局部变量x,将其赋值为10
print('LocalVar2中调用LocalVar1前x的值为:',x) #输出x
LocalVar1(15) #调用LocalVar1函数
print('LocalVar2中调用LocalVar1后x的值为:',x) #输出x
#print('LocalVar2中y的值为:',y) #取消注释后,该行代码报错
LocalVar2() #调用LocalVar2函数
3-13全局变量和global关键字
print("3-13全局变量和global关键字")
def GlobalVar1(): #定义函数GlobalVar1
print('GlobalVar1中x的值为:',x) #输出x
print('GlobalVar1中x的值为:', y) # 输出y
def GlobalVar2(): #定义函数GlobalVar2
x=100 #将x赋为100
global y
y=100#使用全局变量
print('GlobalVar2中x的值为:',x) #输出x
print('GlobalVar2中y的值为:', y) # 输出x
x=20 #定义在所有函数之外,所以x是全局变量,赋为20
y=20 #定义在所有函数之外,所以y是全局变量,赋为20
GlobalVar1() #调用GlobalVar1函数
GlobalVar2() #调用GlobalVar2函数
GlobalVar1() #调用GlobalVar1函数
3-14nonlocal关键字
print("3-14nonlocal关键字")
def outer(): #定义函数outer
x=10 #定义局部变量x并赋为10
def inner(): #在outer函数中定义嵌套函数inner
nonlocal x # nonlocal声明
#通过“nonlocal x”声明在inner函 数中使用outer函数中定义的变量x、
# 而不是重新定义一个局部变量x。
x=20 #将x赋为20
print('inner函数中的x值为:',x)
inner() #在outer函数中调用inner函数
print('outer函数中的x值为:',x)
outer() #调用outer函数
3-17闭包
def outer(x):
y=10
def inner(z):
nonlocal x,y
return x+y+z
return inner
f=outer(5)
g=outer(50)
print('f(20)的值为:', f(20))
print('g(20)的值为:', g(20))
print('f(30)的值为:', f(30))
print('g(30)的值为:', g(30))
print("*"*50)
3-18装饰器
课堂练习
def deco1(func):
def inner1(*args,**kwargs):
print("deco1 begin")
func(*args,**kwargs)
print("deco1 end")
return inner1
def deco2(func):
def inner2(*args,**kwargs):
print("deco2 begin")
func(*args,**kwargs)
print("deco2 end")
return inner2
@deco1
def f1(a,b):
print("a+b=",a+b)
@deco1
@deco2
def f2(a,b,c):
print("a+b+c=",a+b+c)
if __name__=="__main__":
f1(3,5)
f2(1,3,5)
改错练习
image.png
def deco(func):
#定义不定长参数
def inner(*args,**kwargs):
print('deco begin')
func(*args,**kwargs)
print('deco end')
return inner
@deco
def add(a,b):
print(a+b)
if __name__=='__main__':
add(3,5)