美文网首页Python学习笔记
2021年4月18日Python学习 MOOC南开大学 第3章

2021年4月18日Python学习 MOOC南开大学 第3章

作者: 爱生活的越仔 | 来源:发表于2021-04-18 21:52 被阅读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)
    

    相关文章

      网友评论

        本文标题:2021年4月18日Python学习 MOOC南开大学 第3章

        本文链接:https://www.haomeiwen.com/subject/hfbvlltx.html