python 函数进阶

三元运算

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   不管在哪里 永远打印全局的名字

原文地址:https://www.cnblogs.com/GrandDarkness/p/8125918.html