版权声明:转载请声明 https://blog.csdn.net/dirckes8813/article/details/83444895
函数Function
函数变量
- 函数名是变量,他在创建函数时绑定一个函数
- 一个函数可以作用另一个函数的实参传递
- 可以吧一个函数传递给另一个函数,另一个函数的形参变量将绑定实参函数
示例1:
看懂如下代码,判断结果
def myinput(fn):
L = [1, 3, 9, 5, 7]
return fn(L)
print(myinput(max)) # 9
print(myinput(min)) # 1
print(myinput(sum)) # 25
函数的嵌套定义
- 函数嵌套定义是指一个函数理用def语句创建其他函数的情况
- Python的作用域:
- 作用域也叫名字空间 ,是访问变量时查找变量的名字范围空间
- Python中的四个作用域:
作用域 | 英文解释 | 英文解释 |
---|---|---|
局部作用域作用域 | Local | L |
外部嵌套作用域作用域 | Enclosing | E |
函数定义所在模块作用域 | Global | G |
Python内建模块作用域 | Builtin | B |
变量名查找规则
- L—>E—>G—>B
- 在默认的情况下,变量名赋值会创建改变当前作用域内变量关系
Global 语句
- 作用:
- 告诉解释器,global语句声明一个或多个变量,这些变量的作用域为超级模块,也称为全局变量
- 全局声明(global) 将赋值语句的变量映射到模块文件内部的作用域
- 语法:
- global 变量名1 , 变量名2 。。。。
- 说明:
- 全局变量如果在函数内部被赋值则必须经过全局绳命(否则会被认为是局部变量)
- 全局变量实在函数内部不经过声明就可以直接访问
- 不能先创建局部变量,再用global声明为全局变量此种作法不符合规则
- global 变量列表里的变量名不能出现在函数的形参列表里
nonlocal语句
- 作用:
- 告诉解释器,nonlocal声明的变量不是局部变量也不是全局变量,而是外部嵌套函数的变量
- 语法:nonlocal 变量名1,变量名2
- 说明:
- nonlocal语句只能在被嵌套函数内部进行使用
- 对nonlocal变量进行赋值将对外部嵌套函数的作用域内的变量进行操作
- 当有两层或以上函数嵌套时,访问nonlocal变量只对最近的一层变量进行操作
- nonlocal 语句的变量列表里的变量名不能出现在此函数的形参列表中
lambda匿名函数
- lambda表达式(又称匿名函数)
- 作用:
- 创建一个匿名函数对象
- 同def类似,但不提供函数名
- 语法:
- lambda [函数形参列表]:表达式
- 说明:
- lambda 表达式创建的函数只能包含一条表达式
- lambda 比函数简单,且可以随时创建和销毁,有利于降低程序耦合度
- 作用:
示例:
看懂下面的程序在做什么?结果是什么 ?
def fx(f, x, y):
print(f(x, y))
fx((lambda a, b: a + b), 100, 200)
fx((lambda x, y: x**y), 3, 4)
eval函数和exec函数
- eval(source, global=None, local=None), 把一个
字符串source 当成一个表达式来执行,返回表达式执
行后的结果 - exec(source, global=None, local=None) 把一个
字符串source当成程序来执行