zoukankan      html  css  js  c++  java
  • 2019.8.9学习内容及随堂笔记

    可变长参数

    形参

    分为位置形参和默认形参

    实参

    分为位置实参和关键字实参

    可变长参数之*

    def func(name,pwd,*args): # *args 会接收多余的位置实参,args是预定俗成的,不要去更改

    print('name:',name,'pwd:',pwd)

    print(args) #(18, 180, 140)

    return 1

    res = func('nick',123,18,180,140)

    print(res)

    可变长参数之**

    def func(name,pwd,**kwargs):

    print('name:',name,'pwd',pwd)

    print(kwargs) #{'age': 18, 'height': 180},kwargs 会接收多余的关键字实参,以字典形式储存

    return 1

    res = func('nick',123,age = 18,height = 180)

    print(res)

    可变长参数*和**联用

    def func(name,pwd,*args,**kwargs):

    print('name:',name,'pwd:',pwd)

    print(args) #(1, 2, 3) args会接收多余位置实参,以元祖形式储存

    print(kwargs) #{'a': 1, 'b': 2} kwargs会接收多余的关键字实参,以字典形式储存

    return 1

    res = func('nick',123,1,2,3,a=1,b=2)

    print(res)

    def func(name,pwd,x,y,z):

    print('name:',name,'pwd:',pwd)

    print(x,y,z) #1 2 3

    return 1

    tup = (1,2,3)

    res = func('nick',123,tup) #会把元祖打散成位置实参传给形参

    print(res)

    def func(name,pwd,**kwargs):

    print('name:',name,'pwd:',pwd)

    print(kwargs) # {'a': 1, 'b': 2, 'c': 3}

    return 1

    dic = {'a': 1,'b':2,'c':3}

    res = func('nick',123,**dic)# ** 会把字典打散成为关键字实参传给形参

    print(res)

    函数对象

    def func():

    print('from func')

    # 把函数当做 对象 来用

    print(func) # func指向一块内存地址,是函数名

    func()

    a = 1

    print(a) #变量名

    # 变量名可以被引用,函数名也可以被引用

    b = a # b = 1

    f = func #func可以加() 调用函数,那么f 也可以加()调用

    print(f,func)

    f() # 相当于func()

    # 变量名可以放入容器数据类型

    lt = [1,2,3,a,func]

    lt[-1] () # 索引取值,lt[-1] = func,加括号就可以调用函数

    # 变量名还可以做参数

    def f2(name): # 2.此时的name = func(f2传过来的)

    name() # 3.那么这里的name()就相当于func()

    f2(func) #1.把func当实参,那么位置形参的neme = func,那个函数调用结果就是func()调用结果

    # 函数的返回值

    def f3(name): # name = func

    return name # 实际就是返回func

    res = f3(func) # res = func

    print(res)

    res()

    牢记:函数名等同于变量名,即变量名有的方法,函数名同样也有,被引用;当做容器元素;当做函数参数;当做函数返回值

    函数的嵌套

    def f1():

    def f2():

    print('from f2')

    return f2

    abc = f1() # f1()拿到函数的返回值,函数的返回值是f2,abc就相当于f2

    abc() #from f2

    举例:定义一个circle函数,通过传参的形式得到圆的面积或者周长

    import cmath

    def circle(r,action):

    # if action == 'area':

    # return cmath.pi * r ** 2

    # elif action == 'zhouchang':

    # return 2 * cmath.pi * r

    # area = circle(3,'area')

    # print(area)

    # zhouchang = circle(3,'zhouchang')

    # print(zhouchang)

    用函数嵌套

    def circle(r,action):

    def area():

    return cmath.pi * r ** 2

    def zhouchang():

    return 2 * cmath.pi * r

    if action == 'area':

    area()

    elif action == 'zhouchang':

    zhouchang()

    area = circle(3,'area')

    print(area)

    zhouchang = circle(3,'zhouchang')

    print(zhouchang)

    比较两个值

    def self_max(x,y):

    if x > y:

    return x

    return y

    res = self_max(10,20)

    print(res)

    比较四个值

    def self_max(x,y,z,c):

    res1 = self_max(x,y)

    res2 = self_max(z,c)

    res = self_max(res1,res2)

    return res

    res = self_max(10,20,1,100)

    print(res)

    名称空间和作用域

    x = 1

    def f1():

    x = 2

    print('from f1')

    def f2():

    print('from f2')

    print(x) # 1

    名称空间和作用域

    名称空间:存放名字(变量名/函数名)

    名称空间分类: 内置名称空间:python解释器独有的

    len([1,2,3])

    int('10')

    函数调用必须得定义,从来都没定义过,python解释器启动的时候python自动开辟内置名称空间存放了这些python内置方法,python解释器停止后才会销毁

    全局名称空间:除了内置和局部,其它的都是全局

    全局需要自己定义,python文件执行之后才可能有全局名称空间

    局部名称空间:函数内定义的变量名/函数名都存放在局部名称空间

    局部也需要自己定义,必须得在函数调用之后才会生成,调用结束之后就会销毁

    z = 10

    def f1():

    x = 10

    def f2():

    y = 10

    print('from f2')

    三种名称空间的执行顺序:内置-->全局-->局部

    x = 1

    def f1():

    x = 3

    # print(x) # 3

    f1()

    print(x) # 1

    三种名称空间的查找顺序:首先从当前位置开始-->局部-->全局-->内置

  • 相关阅读:
    【codecombat】 试玩全攻略 第九关 循环又循环
    【codecombat】 试玩全攻略 第十三关 已知敌人
    【codecombat】 试玩全攻略 第十一关 再次迷宫经历
    【codecombat】 试玩全攻略 第六关 cell commentary
    【codecombat】 试玩全攻略 第八关 火舞
    【codecombat】 试玩全攻略 第十二关 恐惧之门
    【codecombat】 试玩全攻略 第十四关 已知敌人
    苹果apns推送总结
    Xcode 提升速度小技巧
    UITextField 限制输入字数
  • 原文地址:https://www.cnblogs.com/chmily/p/11348673.html
Copyright © 2011-2022 走看看