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

Python开发【第XXX篇】----函数 -名称空间与作用域

时间:2017-09-03 23:35:36      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:bar   cal   名称空间   func   glob   --   固定   加载顺序   自带   

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

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()

Python开发【第XXX篇】----函数 -名称空间与作用域

标签:bar   cal   名称空间   func   glob   --   固定   加载顺序   自带   

原文地址:http://www.cnblogs.com/llhtjwq/p/7471354.html

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