• python 函数的进阶


    # def eat(*food):
    #     print(food)
    # eat('大米饭','小米饭')保存的形式是元组
    # def func(**kwargs):
    #     print(kwargs)
    # func(山刀='面',老家='早饭')#保存形式是字典
    #接收任参数
    # def func(*args,**kwargs):
    #     print(args,kwargs)
    # func('马化腾','那云',wtf = '胡辣汤')
    

      

    1. 函数参数--动态传参
    2. 名称空间, 局部名称空间, 全局名称空间, 作⽤用域, 加载顺序.
    3. 函数的嵌套
    4. gloabal, nonlocal关键字

    动态猜数

    *args **kwargs

    位置关系 

    位置参数>*args>默认值参数>**kwargs

    二 命名空间

    在python解释器开始执⾏行行之后, 就会在内存中开辟⼀一个空间, 每当遇到⼀一个变量量的时候, 就
    把变量量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内
    存, 表⽰示这个函数存在了了, ⾄至于函数内部的变量量和逻辑, 解释器是不关⼼心的. 也就是说⼀一开始
    的时候函数只是加载进来, 仅此⽽而已, 只有当函数被调⽤用和访问的时候, 解释器才会根据函数
    内部声明的变量量来进⾏行行开辟变量量的内部空间. 随着函数执⾏行行完毕, 这些函数内部变量量占⽤用的空
    间也会随着函数执⾏行行完毕⽽而被清空.
    def fun():
    a = 10
    print(a)
    fun()
    print(a) # a不不存在了了已经..
    我们给存放名字和值的关系的空间起⼀一个名字叫: 命名空间. 我们的变量量在存储的时候就
    是存储在这片空间中的.
    命名空间分类:
    1. 全局命名空间--> 我们直接在py⽂文件中, 函数外声明的变量量都属于全局命名空间
    2. 局部命名空间--> 在函数中声明的变量量会放在局部命名空间
    3. 内置命名空间--> 存放python解释器为我们提供的名字, list, tuple, str, int这些都是内
    置命名空间
    加载顺序:
    1. 内置命名空间
    2. 全局命名空间
    3. 局部命名空间(函数被执⾏行行的时候)
    取值顺序:
    1. 局部命名空间
    2. 全局命名空间
    3. 内置命名空间
    a = 10
    def func():
    a = 20
    print(a)
    func() # 20
    作⽤用域: 作⽤用域就是作⽤用范围, 按照⽣生效范围来看分为 全局作⽤用域和局部作⽤用域
    全局作⽤用域: 包含内置命名空间和全局命名空间. 在整个⽂文件的任何位置都可以使⽤用(遵循
    从上到下逐⾏行行执⾏行行). 局部作⽤用域: 在函数内部可以使⽤用.
    作⽤用域命名空间:
    1. 全局作⽤用域: 全局命名空间 + 内置命名空间
    2. 局部作⽤用域: 局部命名空间
    我们可以通过globals()函数来查看全局作⽤用域中的内容, 也可以通过locals()来查看局部作
    ⽤用域中的变量量和函数信息
    a = 10
    def func():
    a = 40
    b = 20
    def abc():
    print("哈哈")
    print(a, b) # 这⾥里里使⽤用的是局部作⽤用域
    print(globals()) # 打印全局作⽤用域中的内容
    print(locals()) # 打印局部作⽤用域中的内容
    func()

     函数的嵌套看括号

    1. 只要遇⻅见了了()就是函数的调⽤用. 如果没有()就不是函数的调⽤用
    2. 函数的执⾏行行顺序

    def fun1():
        print(111)
    def fun2():
        print(222)
        fun1()
        fun2()
    print(111)
    # 函数的嵌套
    def fun2():
        print(222)
        def fun3():
            print(666)
        print(444)
        fun3()
        print(888)
    print(33)
    fun2()
    print(555)
    

      

    关键字

    global 全局变量

    nanlocal 局部变量

    # a = 100
    # def func():
    #     global a
    #     a = 8
    #     print(a)
    # func()
    # print(a)
    a = 10
    def func1():
        a = 20
        def fun2():
            nonlocal a
            a = 30
            print(a)
        fun2()
        print(a)
    func1()
    

      

  • 相关阅读:
    Java作业一 (2017-9-10)
    遇到的坑1:传奇SF找不到背包数组
    黑白逆向编程课程笔记 18.局部&全局变量&参数详解
    黑白逆向编程课程笔记 16.浮点指令
    黑白逆向编程课程笔记 13.堆栈
    黑白逆向编程课程笔记 11.寄存器&补充
    SVN的trunk branches tags(一)
    JBoss Resteasy是一个遵守JAX-RS 标准的REST的开源项目
    JBOSS是sun公司的应用程序服务器,就象weblogic,jboss包含tomcat的所有功能.
    软件架构(体系结构,Architecture)和软件框架
  • 原文地址:https://www.cnblogs.com/lnrick/p/9174612.html
Copyright © 2020-2023  润新知