zoukankan      html  css  js  c++  java
  • Python__名称空间与作用域

    一:函数嵌套,在调用一个函数的过程中,又调用了其他函数

    def bar():
    print('from bar')
    def foo():
    print('from foo')
    bar()
    foo()
    通过函数的嵌套使用,分解成最小的操作,一次调用


    二:函数的嵌套定义:在一个函数的内部,又定义了一个函数
    def f1():
    x = 1
    def f2():
    print('from f2')
    f2()
    f1()

    三:名称空间,存放名字的地方,准确的说名称空间是存放名字与变量值绑定关系的地方
    内置名称空间:python自带的名字,在python解释器启动时产生,存放一些python内置的名字
    全局名称空间:在执行文件时,存放文件级别定义的名字
    局部名称空间:在执行文件的过程中,如果调用了函数,则会产生该函数的名称空间,用来存放该函数内定义的名字,该名字在函数调用时生效,调用结束后失效
    加载顺序:内置名称空间------>全局名称空间----->局部名称空间
    名字的查找顺序:局部名称空间------>全局名称空间----->内置名称空间


    四:作用域,作用的范围
    全局作用域:全局存活,全局有效
    局部作用域:局部存活,局部有效
    def f1():
    x = 1
    y = 2
    print(locals())
    print(globals())
    f1()
    print(locals())
    print(globals())
    print(locals() is globals())
    改全局名称:
    x = 1
    def f1():
    global x
    x = 2
    f1()
    print(x)

    改局部名称:
    x = 0 
    def f1():
    x = 1
    def f2():
    x = 2
    def f3():
    nonlocal x#改的是函数正上方的值
    x = 3
    f3()
    f2()
    f1()


    五:优先掌握,在函数定义时就已经固定,与调用位置无关
    x = 1
    def f1():
    def f2():
    print(x)
    return f2
    func = f1()
    func()


































  • 相关阅读:
    CountUp.js让页面数字跳动起来
    easing.js让页面动画丰富起来
    jQuery Lightbox效果插件Boxer
    aos.js让页面滚动变得丰富
    nodejs formidable混合表单提交
    css常见水平居中
    css渐变知识知多少
    大整数相加 a+b 的c语言实现
    字符串连接
    typedef在C和C++的区别?
  • 原文地址:https://www.cnblogs.com/wangmengzhu/p/7228015.html
Copyright © 2011-2022 走看看