码迷,mamicode.com
首页 > 编程语言 > 详细

python函数进阶

时间:2018-12-24 18:59:36      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:col   情况   加载   启动   nonlocal   运行   容器   style   不可变   

  

# 函数的命名空间和作用域
# 内置命名空间
    # 存在于python解释器中,在启动python时,就自动运行内置命名空间比如print() input()即启动就可以使用的命名变量内置的名字,在启动时被加载到内存中
# 全局命名空间
    # 在程序中从上至下依次被执行的名称变量,放置了我们需要的变量名称
# 局部命名空间
    # 在程序中定义函数中所定义的名称变量,作用范围只是在该局部范围内有效,当函数结束时,将名称变量会释放
# 在全局空间中能够使用,内置名称和全局名称
# 在局部空间中能够使用,内置名称和全局名称和局部名称
# 在正常情况下,直接使用内置的名字
# 当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字
# 当我自己有的时候 我就不找我的上级要了
# 如果自己没有 就找上一级要 上一级没有再找上一级 如果内置的名字空间都没有 就报错
# 多个函数应该拥有多个独立的局部名字空间,不互相共享

# def f():
#     a = 1
#     print( a )
# print(a)
# # 在全局空间中使用,局部变量会报错
# a = []
# def f():
#     a.append(‘ss‘)
#     print(a)
# f()
# print(a)
# a = 1
# def f():
#     a +=1
# f()
# print(a)
# 在局部变量中可以使用全局变量 但是 当全局变量为不可变类型时,不能再局部空间中对其进行运算
# 可变数据类型不受影响
# 如果想要修改,得在局部空间使用global可对全局不可变类型的变量进行改变(但是不建议使用global,因为他会使代码的安全性降低)
# a = 1
# def f1():
#     a = 9
#     def f2():
#         b = 2
#         print(‘##‘,a,b)
#         def f3():
#             nonlocal a
#             a += 2
#             print(a,‘===‘)
#         f3()
#         print(‘&‘, a)
#
#     f2()
#     print(a,‘__‘)
# print(a,‘@@‘)
# f1()
# # print(‘a!!‘,a)
# def func():
#     print(123)
# func1 = func
# # func1()
# # func()
# print(id(func),id(func1))
# l = [func,func1]
# for i in l:
#     i()
# #函数名是内存地址,可以进行赋值,函数名可以作为容器类型的元素
def func():
    print(123)

def wahaha(f):
    f()
    return f           #函数名可以作为函数的返回值

qqxing = wahaha(func)   # 函数名可以作为函数的参数
qqxing()

 

python函数进阶

标签:col   情况   加载   启动   nonlocal   运行   容器   style   不可变   

原文地址:https://www.cnblogs.com/hello-boy/p/10170287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!