函数变量
函数名是变量,它在创建时绑定一个函数
示例:
def f1(lst=[]):
print('f1函数被调用')
f1()
f1=None
f1() 出错
一个函数可以作为另一个函数的参数(实参)传递
示例:
def f1():
print('f1被调用')
def f2():
print('f2被调用')
def fx(fn):
print('fn绑定的函数是:',fn) #在fx内调用fn绑定的函数
fn()
fx(f1) 调用fx,把f1作为实参传输
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数可以作为另一个函数的返回值:
函数可以返回另一个函数
示例:
def get_op(l):
s = input('请输入您的操作:')
if s == '求最大':
return max(l)
elif s == '求最小':
return min(l)
elif s == '求和':
return sum(l)
l = [2,3,4,6,9,8]
print(l)
f = get_op(l)
#注:f = get_op 与 f = get_op() 意义不同
print(f(l))
# f(l) 等同于 max(l) min(l) sum(l)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数嵌套的定义:
def语句的作用是用来创建一个函数
def 语句可以写在函数内部,在函数执行时可以动态创建一个函数
示例:
def get_fun(v):
if v == 1:
def myadd(x,y):
return x+y
return myadd
elif v == 2:
def mysub(x,y):
return x-y
return mysub
fx = get_fun(1)
print(fx(400,300))
fx = get_fun(2)
print(fx(400,300))
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数的全局变量和局部变量
局部变量:
1.定义在函数内部的变量称为局部变量(函数形式的形参也是局部变量)
2.局部变量只能在函数内部使用
3.局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁
全局变量
1.定义在函数外部,模块内部的变量成为全局变量
2.全局变量,所有的函数都可以直接访问(但函数内部不能直接修改全局变量的绑定关系)
示例:(417test.py)
a = 100 ……全局变量
b = 200 ……全局变量
def fn(c): ……形参
d = 400 ……局部变量
print(a,b,c,d)
fn(300)
print('a=',a)
print('b=',b)
局部变量说明:
1.在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系。
2.在函数内部的赋值语句不会对全局变量造成影响。
作用域问题:
作用域也叫做命名空间,是访问变量时查找变量名的范围空间
Python的四个作用域L E G B
作用域 英文解释 英文简写
局部作用域(函数内) local(function) L
外部嵌套函数作用域 Enclosing function locals E
函数定义所在模块的作用域 Global(module) G
python内置模块的作用域 builtin(python) B
示例:417test.py
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
变量名的查找规则(顺序):
1.查找本地变量
2.查找包括此函数的外部嵌套函数内部的变量
3.全局变量
4.内置变量
globals()/locals() 函数
globals() 返回全局作用域内变量的字典
locals() 返回局部作用域内变量的字典
global语句
作用:告诉解释执行器,global语句声明的一个或者多个变量,这些变量的作用域为'''模块级'''的作用域变量
也称作全局变量
全局声明: 将赋值变量映射到模块文件内部的作用域
说明:1.全局变量如果在函数内部被赋值,则必须通过全局声明
2.全局变量在函数内部不经过声明就可以直接访问
3.不能先声明局部变量,再用global声明为全局变量,此做法不和规则
4.global变量列表里的变量名不能再出现在次作用域内的形参列表里
(如果一定要用,则形参列表里的参数和原来的变量没关系)
示例:global a,b
global v
v = 100
l = 200
def fx():
global v,l
v = 200
l = 400
return v,l
print(fx())
print(v,l)
nonlocal语句:
作用:告诉解释执行器,nonlocal声明的变量不是局部变量,也不是全局变量,而是“外部”嵌套函数内的变量。
语法:nonlocal 变量名1,变量名2......
示例:
v = 100
def outter():
v = 200
print('outter里的v=',v)
def inner():
nonlocal v
v += 1
print('inner里的v=',v)
inner()
print('调用inner后,outter里的v=',v)
说明:1.nonlocal语句只能在被嵌套函数内部进行使用
2.访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作
3.当有两层或两层以上嵌套函数时,访问nonlocal变量只对最近一层变量进行操作
4.nonlocal语句的变量列表的变量名不能出现在此函数的参数列表里(即def fx(v) nonlocal v)
函数名是变量,它在创建时绑定一个函数
示例:
def f1(lst=[]):
print('f1函数被调用')
f1()
f1=None
f1() 出错
一个函数可以作为另一个函数的参数(实参)传递
示例:
def f1():
print('f1被调用')
def f2():
print('f2被调用')
def fx(fn):
print('fn绑定的函数是:',fn) #在fx内调用fn绑定的函数
fn()
fx(f1) 调用fx,把f1作为实参传输
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数可以作为另一个函数的返回值:
函数可以返回另一个函数
示例:
def get_op(l):
s = input('请输入您的操作:')
if s == '求最大':
return max(l)
elif s == '求最小':
return min(l)
elif s == '求和':
return sum(l)
l = [2,3,4,6,9,8]
print(l)
f = get_op(l)
#注:f = get_op 与 f = get_op() 意义不同
print(f(l))
# f(l) 等同于 max(l) min(l) sum(l)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数嵌套的定义:
def语句的作用是用来创建一个函数
def 语句可以写在函数内部,在函数执行时可以动态创建一个函数
示例:
def get_fun(v):
if v == 1:
def myadd(x,y):
return x+y
return myadd
elif v == 2:
def mysub(x,y):
return x-y
return mysub
fx = get_fun(1)
print(fx(400,300))
fx = get_fun(2)
print(fx(400,300))
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
函数的全局变量和局部变量
局部变量:
1.定义在函数内部的变量称为局部变量(函数形式的形参也是局部变量)
2.局部变量只能在函数内部使用
3.局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁
全局变量
1.定义在函数外部,模块内部的变量成为全局变量
2.全局变量,所有的函数都可以直接访问(但函数内部不能直接修改全局变量的绑定关系)
示例:(417test.py)
a = 100 ……全局变量
b = 200 ……全局变量
def fn(c): ……形参
d = 400 ……局部变量
print(a,b,c,d)
fn(300)
print('a=',a)
print('b=',b)
局部变量说明:
1.在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系。
2.在函数内部的赋值语句不会对全局变量造成影响。
作用域问题:
作用域也叫做命名空间,是访问变量时查找变量名的范围空间
Python的四个作用域L E G B
作用域 英文解释 英文简写
局部作用域(函数内) local(function) L
外部嵌套函数作用域 Enclosing function locals E
函数定义所在模块的作用域 Global(module) G
python内置模块的作用域 builtin(python) B
示例:417test.py
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
变量名的查找规则(顺序):
1.查找本地变量
2.查找包括此函数的外部嵌套函数内部的变量
3.全局变量
4.内置变量
globals()/locals() 函数
globals() 返回全局作用域内变量的字典
locals() 返回局部作用域内变量的字典
global语句
作用:告诉解释执行器,global语句声明的一个或者多个变量,这些变量的作用域为'''模块级'''的作用域变量
也称作全局变量
全局声明: 将赋值变量映射到模块文件内部的作用域
说明:1.全局变量如果在函数内部被赋值,则必须通过全局声明
2.全局变量在函数内部不经过声明就可以直接访问
3.不能先声明局部变量,再用global声明为全局变量,此做法不和规则
4.global变量列表里的变量名不能再出现在次作用域内的形参列表里
(如果一定要用,则形参列表里的参数和原来的变量没关系)
示例:global a,b
global v
v = 100
l = 200
def fx():
global v,l
v = 200
l = 400
return v,l
print(fx())
print(v,l)
nonlocal语句:
作用:告诉解释执行器,nonlocal声明的变量不是局部变量,也不是全局变量,而是“外部”嵌套函数内的变量。
语法:nonlocal 变量名1,变量名2......
示例:
v = 100
def outter():
v = 200
print('outter里的v=',v)
def inner():
nonlocal v
v += 1
print('inner里的v=',v)
inner()
print('调用inner后,outter里的v=',v)
说明:1.nonlocal语句只能在被嵌套函数内部进行使用
2.访问nonlocal变量将对外部嵌套函数作用域内的变量进行操作
3.当有两层或两层以上嵌套函数时,访问nonlocal变量只对最近一层变量进行操作
4.nonlocal语句的变量列表的变量名不能出现在此函数的参数列表里(即def fx(v) nonlocal v)