三元运算
a = 1 b = 5 c = a if a>b else b print(c)
构成
变量 = 条件返回True的结果 if 条件 else 条件返回False的结果
必须要有返回的结果
必须要有if和else
只能是简单的情况
def func(a,b): return a if a>b else b c = func(3,5) print(c)
函数进阶
命名空间和作用域
命名空间分为:内置命名空间,全局命名空间,局部命名空间
内置命名空间
就是python解释器一启动就可以使用的名字,存储在内置命名空间中
内置的名字在启动解释器的时候被加载进内存里
全局命名空间
是在程序从上到下被执行的过程中依次被加载进内存的
放置了我们设置的所有变量名和函数名
局部命名空间
就是函数内部定义的名字
当调用函数的时候,才会产生这个名称空间,随着函数执行的结束,这个命名空间就又消失了
相关联系
在局部;可以使用全局,内置命名空间中的名字
在全局:可以使用内置命名空间的名字,但是不能用局部中的名字
在内置:不能使用局部和全局的名字
这个叫 依赖倒置原则
在正常情况下,直接使用内置的名字
当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字
当本级有的时候,就不向上一级寻找
当本级没有的时候就向上一级寻找
作用域
作用域有:全局作用域,局部作用域
全局作用域
作用在全局,内置和全局命名空间中的名字都属于全局作用域
局部作用域
作用在局部 函数(局部名字看见中的名字属于局部作用域)
对于不可变数据类型,在局部可以查看全局作用域中的变量
但是不能直接修改
如果想修改,需要在程序的开始添加global声明
如果在局部(函数)内声明一个global变量,那么这个变量在局部的所有操作将多全局的变量有效
locals和globals
locals 指的是 本地的 它的作用是放在哪里就打印哪里的名字,如果在全局就打印全局,如果在局部就打印局部
globals 不管在哪里 永远打印全局的名字