python学习--嵌套函数、局部(全局)变量
程序员文章站
2024-01-15 20:01:10
...
一、嵌套函数
函数调用:在一个函数中调用另外一个函数。
def i_nest():
print('Python')
def o_nest(f):
f()
o_nest(i_nest)
>>>Python
内部函数里面含有输出字符’Python’的语句。
python中,函数即为一个对象,在定义一个函数的时候,参数可以引用任何一个对象,也就可以调用其他的函数。
###调用abs
def opt_seq(func,seq)
r = [func(i) for i in seq]
return r
opt_seq(abs,range(-3,3))
[3,2,1,0,1,2]
定义的函数参数func,引用求绝对值abs函数,求取range(-3,3)内的序列绝对值。
函数嵌套:在一个函数中套用另外一个函数。
def o_nest():
def i_nest():
print('Python')
return i_nest
a =o_nest()
a
a()
函数i_nest()套用在o_nest()里面。
进行a =o_nest()运算后,返回i_nest值为a(白色框)。单步调试可看:
内层函数为i_nest(),而不是i_nest,所有在第7行并不执行输出‘python’操作。
作用域:一个标识符的可见范围,这就是标识符的作用域。一般常说的是变量的作用域。即若i_nest()函数内有变量,仅仅在i_nest()函数内部使用。若想别处使用,需声明全局变量。
全局变量:在整个程序运行环境中都可见、可用;
局部变量:在函数、类等内部可见、可用。
### 局部变量
a = 1
def f1():
print(a+1)
def f2():
a=a+1
print(a)
f1()
f2()
f1() —>输出2
f2() —>输出local variable ‘a’ referenced before assignment 未声明a的值。
### 全局变量
a = 1
def f1():
print(a+1)
def f2():
global a
a=a+1
print(a)
f1()
f2()
f1() —>输出2
f2() —>输出3
推荐阅读