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。