python 日记 day10 函数的进阶

三元运算
a = 1
b = 5
c = a if a>b else b 
print(c)
 变量 =条件返回Ture的结果 if 条件 else 条件返回false的结果

三元运算条件

  1.必须有结果

  2.必须要有if和else

  3.只能是简单情况下用

命名空间和作用域:

  内置命名空间: 是python解释器一启动就可以使名字存储在内置命名空间中。

  内置的名称在启动解释器的时候被加载进内存。

全局命名空间:

  是程序从上到下执行的过程中依次加载进内存。

  放置了我们设置的所有变量和函数。

局部命名空间:

  就是函数内部定义的名字。

  当调用函数的时候,才会产生这个名字,随着函数的执行结束,这个命名空间就又消失了。

在局部命名空间中:可以使用全局命名空间和内置命名空间中的名字。

在全局命名空间中:可以使用内置命名空间的名字,但不能使用局部命名空间的名字

在内置命名空间中:不可以使用全局命名空间和局部的命名空间的名字。  

  当我们在全局命名空间定义了和内置命名空间中同名的名字时,会使用全局的名字。在正常情况下,直接使用内置命名空间的名称。

  多个函数应该拥有多个独立的局部命名空间,不能共享。

作用域:

  全局作用域:作用于全局,包含内置命名空间,全局命名空间,在整个文件的任意位置都能被引用,全局有效。

  局部作用域:  作用于局部,只在局部范围内生效。

global 作用于全局,只能控制全局变量。

local 输出什么根据local的位置有关。

nonlocal 声明上面第一层局部变量,找上层中离当前函数最近一层的局部变量。就近原则

作用链:

 

def f1():
    a = 1
    def f2():
        print(a)
    f2()

f1()

 

def f1():
    a = 1
    def f2():
        def f3():
            print(a)
        f3()
    f2()

f1(
def f1():
    a = 1
    def f2():
        a = 2
    f2()
    print('a in f1 : ',a)

f1(

 

 

  在内部函数使用变量的时候,是从小局部到中局部再到大局部再到全局,一级一级的往上取。

函数的本质:

  函数的本质是一个内存地址。

  函数可以作为函数的参数,可以作为容器类型的元素,可以作为元素的返回值。

 闭包;嵌套函数,内部函数调用外部函数。

 

 

 

 

posted @ 2017-12-27 19:02  liang哥哥  阅读(88)  评论(0编辑  收藏  举报