Python学习笔记

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)
上一篇下一篇

猜你喜欢

热点阅读