函数对象,名称空间和作用域
发布时间:2020-12-20 10:37:14 所属栏目:Python 来源:网络整理
导读:目录 函数对象 引用 作为函数参数 作为函数返回值 作为容器类元素 小练习 函数的嵌套 名称空间和作用域 名称空间 内置名称空间 全局名称空间 局部名称空间 名称空间的执行(生成)的顺序 搜索顺序 作用域 全局作用域 局部作用域 global关键字 nonlocal关键字
目录
函数对象python中一切皆对象 引用def f1(): print('from f1') func = f1 print('f1:',f1) print('func',func) # 打印结果: f1: <function f1 at 0x000002110991D268> func <function f1 at 0x000002110991D268> 作为函数参数def f1(): print('from f1') def f2(f2_f1): print('f2_f1:',f2_f1) f2(f1) print('f1:',f1) # 打印结果: f2_f1: <function f1 at 0x000001E47029D268> f1: <function f1 at 0x000001E47029D268> 作为函数返回值def f1(): print('from f1') def f2(f2_f1): return f2_f1 res = f2(f1) print('res:',res) print('f1:',f1) # 打印结果: res: <function f1 at 0x0000019F13E7D268> f1: <function f1 at 0x0000019F13E7D268> 作为容器类元素def f1(): print('from f1') lt = [f1,12,3,4,5] lt[0]() 小练习def pay(): print('支付1e成功') def withdraw(): print('提现2e成功') dic = { '1': pay,'2': withdraw } while True: msg = ''' '1': 支付,'2': 提现,'3': 退出,''' print(msg) choice = input('>>: ').strip() if choice == '3': break elif choice in dic: dic[choice]() 函数的嵌套函数里面嵌套函数 def f1(): print('from f1') def f2(): print('from f2') f2() f1() 名称空间和作用域名称空间内置名称空间存储了内置方法的空间 数据类型内置方法;python解释器自带的方法(print / len / list / str / dict) 全局名称空间除了内置和局部都叫全局 局部名称空间函数内部定义的都叫局部 名称空间的执行(生成)的顺序
搜索顺序从当前位置查找,找不到按照这种顺序,不会逆向寻找:局部 > 全局 > 内置 > 报错 作用域全局作用域内置名称空间 +全局名称空间 --> 全局作用域 局部作用域局部名称空间 --> 局部作用域
global关键字x = 10 def func(): global x x = 20 func() print(x) # 打印20 nonlocal关键字x = 10 def f1(): x = 2 def f2(): nonlocal x # nonlocal让x成为额顶层函数的局部,不是让它成为全局 x = 30 f2() print(x) f1() # 打印30 注意点所有可变数据类型均可打破上述一切规则 lt = [10] def f1(): lt.append(20) f1() print(lt) # 打印结果: [10,20] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |