zoukankan      html  css  js  c++  java
  • 函数对象

    函数是第一类对象

    1、函数名是可以被引用的

    2、函数名可以当参数使用

    3、函数名可以当作返回值使用

    4、函数名可以被当做容器类型的元素

    PS:传参的时候没有特殊需求,一定不要加括号,加括号会当场执行

    函数的嵌套调用:在函数内调用函数

    def index():
        def home():
            print('from home')
        home()
    index()
    
    
    打印结果:
    from home

    名称空间:存放名称的空间

    名称空间的分类

    1、内置名称空间

    在python提前给定义完的名字,就是存在的内置名称空间

    2、全局名称空间

    存放于文件及的变量名字,就是全局名称空间

    if,while,for内容定义的名字执行之后都存放于全局

    3、局部名称空间

    函数内部的所有名字都是存放于当前函数的内置名称空间

    生命周期

    1、内置名称空间

    在python解释器启动时候生效,关闭解释器失效

    2、全局名称空间

    当你启动当前py文件时生效,当前页面代码执行结束后失效

    3、局部名称空间

    当你调用当前函数时生效,函数体代码左后一行执行结束后就失效

    名称空间的查找顺序

    局部:局部——>>>全局——>>>内置

    全局:全局——>>>内置

    内置:找不到就会报错

    PS:函数内部使用的名字,在定义阶段已经规定了,与你的调用位置无关

    作用域

    作用域的分类:

    1、全局作用域

    全局作用域可以调用的名字就存在于全局作用域

    内置名称空间 + 全局名称空间

    2、局部作用域

    局部可以调用的名字就存放于局部作用域

    局部名称空间

    关键字

    global:声明全局变量

    x = 1
    def index():
        global x    # 声明全局变量
        x = 2
    
    index()
    print(x)
    
    打印结果
    2

    nonlocal:在局部名称空间声明局部变量(可变类型除外)可变类型可以在局部修改外部值

    def index1():
        x = 1
        def index2():
            nonlocal x    #声明局部变量(改写了上层的值)
            x = 2
        index2()
        print(x)
    index1()
    
    
    打印结果:
    2
  • 相关阅读:
    【python】正则表达式
    Java 接口、抽象类
    设计模式之抽象工厂方法模式
    设计模式之工厂方法模式
    设计模式之单例模式
    pulltorefresh学习
    ProgressDialog使用
    android:descendantFocusability用法简析
    数据保存之File
    runOnUiThread学习
  • 原文地址:https://www.cnblogs.com/aheng/p/11835741.html
Copyright © 2011-2022 走看看