python基础之名称空间和作用域、函数嵌套

一、名称空间

1、定义:存放名字与值的绑定关系

2、名称空间分为:内置名称空间、全局名称空间、局部名称空间

内置名称空间:python解释器自带的名字,python解释器启动就会生成

全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生

局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效

3、加载的顺序:三者的加载顺序:内置名称空间->全局名称空间->局部名称空间

4、取值的顺序:局部名称空间->全局名称空间->内置名称空间7

# # max=10
# def func(): #x=1
#     # max=20
#     print(max)
#
#
# func()

# max=10
#
# def func(): #x=1
#     max=20
#     # print(max)
# func()
#
#
# print(max)
#

# # x=0
# def f1():
#     # x=1
#     def f2():
#         # x=2
#         def f3():
#             # x=3
#             print(x)
#         f3()
#     f2()
#
# f1()

二、作用域

1、范围:

全局作用域:内置名称空间与全局名称空间的名字属于全局范围,在整个文件的任意位置都能被引用,全局有效

局部作用域:局部名称空间的名字属于局部范围,只在函数内部可以被引用,局部有效

# x=1
# def foo():
#     def f2():
#         print(x)
#     f2()
# def bar():
#     print(x)
#
# foo()
# bar()

# def f1():
#     x=1
#     def f2(): #f2=value
#         # x=2
#         print(x)
#     f2()
# f1()

x=1
def func():
    x=2
    def f1():pass
    # print(dir(globals()[‘__builtins__‘])) #全局作用域name
    # print(locals()) #局部作用域name

func()

print(globals() is locals())

2、作用顺序是:局部作用域》》》》》》全局作用域

三、函数嵌套

1、函数的嵌套定义

def f1():
    def f2():
        def f3():
            print(‘from f3‘)
        print(‘from f2‘)
        f3()
    print(‘from f1‘)
    f2()
# print(f1)
f1()

2、函数的嵌套调用

def max2(x,y):
     if x > y:
        return x
     else:
        return y

def max4(a,b,c,d):
    res1=max2(a,b) #23
    res2=max2(res1,c) #23
    res3=max2(res2,d) #31
    return res3
print(max4(11,23,-7,31))
时间: 2024-10-09 22:37:31

python基础之名称空间和作用域、函数嵌套的相关文章

python基础13——名称空间与作用域

昨日review 0: 引用传递 python中所有值的传递,传递的都是不是值本身,而是值的引用,即内存地址 1.函数分为两大类,分别是是什么?二者在使用时有何区别? 内置函数 自定义函数 2.什么是形参.什么是实参?形参与实参之间的关系是什么? def func(x,y): print(x) func(1,2) 3.简述两只形参的区别:位置形参.默认形参 x=[] def func(name,age,gender=None):                                 #

python基础:名称空间与作用域

Python的变量定义后都有自己的作用域,每个作用域内都有名字空间.名称空间就是变量名称与对象的关联关系.Python中使用变量名引用对象,需要使用该变量时,就在命名空间中进行搜索,获取对应的对象.从目前python的实现上来讲,内部使用了字典,但是并不保证以后会更改实现,所以说现阶段,命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值.在一个Python程序运行中,至少有4个scopes是存在的. 直接访问一个变量可能在这四个namespace中逐一搜索. L

python学习第十天,名称空间与作用域,函数的嵌套,global 和 nonlocal

名称空间: 内置名称空间: 在打开pytharm是加载 全局名称空间: 在运行py文件是加载 局部名称空间(临时名称空间) :在py文件中调用时加载 def func(): ----->函数定义 pass ------->函数体 func()------------->函数调用 函数定义时:内存中只储存与函数名的对应关系,函数体的内容不储存 函数调用时:才执行函数体的内容,创建临时空间,随着函数执行结束,内存中的临时名称空间里面的内容也清空 作用域: 全局作用域:内置名称空间里的内容+全

python学习之名称空间与作用域

1.命名关键字参数(了解)及组合使用 **命名关键字参数:在定义函数时,*后定义的参数,如下所示,称之为命名关键字参数** 1.1 命名关键字参数的特点 命名关键字实参必须按照key=value的形式为其传值 def func(x,y,*,a,b): # 其中,a和b称之为命名关键字参数 print(x,y) print(a,b) func(1,2,b=222,a=111) 示例 def func(x,y,*,a=11111,b): print(x,y) print(a,b) func(1,2,

Python:函数名称空间与作用域:

Python:函数名称空间与作用域 函数对象:(第一类对象) 定义:函数是第一类对象:函数名可以当做数据来使用 1.可以直接被引用,加()就能运行 def foo(): print("from foo") f=foo f() 2.可以当作参数传入另一个函数 def warpper(x): x() warpper(foo) 3.可以当作另外函数的返回值 def warpper2(): return foo f=warpper2() print(f is foo) 4.可以当作容器类型的一

python学习笔记第五节(函数,名称空间,作用域)

python2中 默认存为unicode需要再字符串前加u 循环打印每一行 循环打印整个文件内容方式二下面这种同一时间取一行 先定义后执行 函数定义的时候,只检测语法错误,不执行 函数返回值,默认是元组模式return 只能返回一次 形参与实参 形参就是变量名实参就是值 打破顺序限制 经常变化的值用位置形参,值通常不变的用默认参数.默认参数通常定义成不可变类型.默认参数只在定义时被赋值一次. 可变长参数就是* 关键字参数(关键字参数指的是实参当中指定y=2,z=3等等) *等同于位置参数 函数内

08 名称空间与作用域

一.名称空间namespace:存放 名字与值内存地址绑定关系 的地方 1.内置名称空间(Built-in):存放python自带的名称与值的绑定体,len.  print. sum等内置方法的名字,注意关键字比如if.while...不存放在其中 产生:在python解释器启动时创建 销毁:python解释器退出时关闭 2.全局名称空间(Global):当打开一个文件然后执行时,全局名称空间记录了文件中定义的变量,包括此文件中定义的函数.类.其他导入的模块.模块级的变量与常量. 产生:在.py

python基础之====函数对象、函数嵌套、名称空间与作用域、装饰器

阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(

python基础(3):函数对象、函数嵌套、名称空间与作用域、装饰器

函数对象 函数嵌套 名称空间与作用域 闭包函数 装饰器 练习 一 函数对象 #1 可以被引用 def max(x, y): return x if x > y else y func = max print(func(1, 2)) #2 可以当作参数传递 def max(x, y): return x if x > y else y def max_1(x, func): return func(x, 1) print(max_1(2, max)) #3 返回值可以是函数 #4 可以当作容器类