Python 函数介绍

返回值

# def f():
#     print('ok')
#
#     return  10      #return 返回
#                     #retrun作用  1,结束函数 2,返回某个对象
#
# a = f()
# print(a)
# print(f())

def add(*args):
    Sum = 0
    for i in args:
        Sum += i
    return Sum     #保留sum的值   把sum赋给 add(1,2,3)
a = add(1,2,3)
print(a)

#函数里如果没有return 会默认返回None (就是什么都没有)
#如果ruturn多个对象,会返回一个多个对象组成的元组

作用域

#L>E>G>B。
#L:local,局部作用域,即函数中定义的变量
#E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域
#G:globa,全局变量,就是模块级别定义的变量
#B:built-in,系统固定模块里面的变量
count = 10
def outer():
    global count    #声明此处往下是使用全局变量,否则会报:先输出变量再给变量定义的错
    print(count)
    count = 100
    print(count)
outer()
#1,只有模块、类、及函数才能引入新作用域
#2,对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量
#3,内部作用域要修改外部作用域变量的值时,全局变量要使用global关键字,嵌套作用域变量要使用nonlocal关键字。
# nonlocal是python3新增的关键字,有了这个 关键字,就能完美的实现闭包了

闭包

# 闭包  知识点
#如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用
# ,那么内部函数就被认为是闭包(closure).
#(1)作用域
#(2)高阶函数
#(3)闭包
def outer():
    x = 10
    def inner():     #条件一 inner就是内部函数
        print(x)    #条件二 外部环境的一个变量

    return  inner   #结论:内部函数inner就是一个闭包

#关于闭包  闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境
# ,当然这个环境可以有很多,不止一个简单的x。

 

posted @ 2017-11-15 16:42  Lilinpei  阅读(182)  评论(0编辑  收藏  举报