python基础08

globals() 函数 和locals 函数

globals() 返回当前全局作用域内变量的字典
locals() 返回当前局eval.py作用域内变量的字典

示例:
#示意globals() 和 locals 函数的用法

            a = 1
            b = 2
            c = 3
            def fn(c,d):
            e = 300
            print("locals()返回", locals())
            print("glocals()返回", globals())

            print(a,b,c,d,e)
            print("全局变量c的值", globals()["c"])
            fn(100,200)

函数变量

函数名是变量,它在创建函数时绑定一个函数
   示例:

一个函数可以作用另一个函数的实参传递
可以把一个函数给另一个函数,另一个函数的形参变量将绑定实参函数
 示例:
     func_give_func.py

看懂如下代码 判断结果

def myinput(fn):
L=[1,3,9,5,7]
return fn(L)
print(myinput(max))
print(myinput(min))
print(myinput(sum))
函数可以作为另一个函数的返回值

函数的嵌套定义

函数嵌套定义是指一个函数里用def语句来创建其他函数的

python的作用域

作用域也叫名字空间,是访问变量时查找变量的名范围空间

python中的四个作用域 LEGB
作用域   英文解释  英文缩写
局部作用域 local(function)   L
外部嵌套函数作用域 Enclosing Fucntion local   E
函数定义所在模块(文件)的作用域   Global(module) G
python内建模块的作用域 Builtin(python)  B

变量名的查找规则
 L —>E----->G----->B
注:
在默认情况下,变量名赋值会创建或改变当前作用域内的变量的绑定关系

global 语句

作用:
1、告诉解释执行器,global语句声明的一个或多个变量。这个变量的作用域为模块级的作用域
也称作全局变量
2、全局声明(global)将赋值语句的变量映射到模块文件内部的作用域
语法:
global 变量1,变量2
示例见:
global.py

说明:

1、全局变量如果要在函数内部被赋值,则必须经过全局声明(否则会被认为是局部变量)
2、全局变量在函数内部不经过声明就可以直接访问(取值)
3、不能先创建局部变量,再用global声明为全局变量,这种语法不符合规则
4、global变量列表里的变量名不能出现在函数的形参列表里
 #函数的形参不能用global

nonlocal 语句

作用:
告诉解释器,nonlocal声明的变量不是局部变量,也不是全局变量,而是外部嵌套函数内的变量
语法:
nonlocal 变量名1,变量名2,....
示例见:
nonlocal.py

说明;

1、nonlocal 语句只能在被嵌套函数内部进行使用
2、对nonlocal变量进行赋值将对外部嵌套函数作用域内的变量进行操作
3、当有两层以上函数嵌套时,访问nonlocal变量只对最近一层变量进行操作
4、nonlocal 语句的变量列表里的变量名不能出现在此函数的形参列表中

def 语句的作用是创建函数

lambad 表达式(又称匿名函数)

作用:
创建一个匿名函数对象
同def 类似,但不提供函数名
语法:
lambad [函数形参列表]:表达式
示例见:
lambad.py

说明:

1、lambad 表达式创建的函数只能包含一条表达式
2、lambad 比函数简单,且可以随时创建和销毁,有利于降低程序的
偶合度

练习:
写一个lambad表达式:
 fx = lambad n:…
次表达式创建的函数判断n这个数的平方加1 能否被5整除,如果能整数则
返回True,否则返回False
print(fx(3)) #返回True
print(fx(4)) #返回False

fx = lambda n: True if (n**2+1) % 5 == 0 else False

#print(fx(3))
#print(fx(4))

fx = lambda n: (n**2+1) % 5 == 0
print(fx(3))
print(fx(4))

看懂下面的程序在做什么?结果是什么?
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(scource, global=None,local=None),把一个字符串scource
当成一个表达式来执行,返回表达式执行后的结果

exec(scource, global=None,local=None) 把一个字符串scource
当成程序来执行

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值