美文网首页
Python 函数(下)

Python 函数(下)

作者: Linux运维 | 来源:发表于2020-08-25 22:27 被阅读0次

1.函数名的使用
2.全局变量与局部变量
3.函数的嵌套
4.nonlocal 特指修改局部变量
5.闭包函数
6.匿名函数


1.函数名的使用

1.函数名是个特殊的变量,可以当做变量赋值

def func():
    print(1)
# 动态创建
a = func
# 调用函数
a()
# 动态销毁
del a

2.函数名可以作为容器类型数据的元素

def func1():
    print(1)
def func2():
    print(2)
def func3():
    print(3)
lst = [func1,func2.func3]
for i in lst:
    i()

3.函数名可以作为函数的参数

def func1():
    print("func1函数")

def func(func_xingcan):
    func_xingcan()    # func1()

func(func1)  # func1函数

4.函数名可作为函数的返回值

def func(func_xingcan):
    return func_xingcan

res = func(func1)    # res = func1
print(res)
res()    #  func1()

5.doc 定义函数的文档

def func():
    '''
    一些解释内容等...
    '''

# 方法一
res = func.__doc__
print(res)
# 方法二
help(func)

2.全局变量与局部变量

局部变量:定义在函数内部的变量,作用范围仅限定在函数内部,函数外部无法获取。
.
全局变量:定义在函数外部的变量,或者是在函数内部使用global关键字定义的变量,作用范围很跨整个文件。
.
作用域:作用的范围
.
生命周期:内建变量 > 全局变量 > 局部变量(调用函数时,局部变量创建,调用结束时,局部变量被销毁)
.
销毁顺序:局部、全局、内建

## global 的使用
#定义全局变量
def func():
    global a
    a = 10
func()
print(c)

# 修改全局变量
b = 20
def func():
    global b
    b = 30
func()
print(b)

3.函数的嵌套

函数的嵌套遵循 LEGB原则(就近原则),从下往上,从里向外,一次寻找。

# 基本写法
def outer():
    def inner():
        print(1)
    inner()
outer()

4.nonlocal 特指修改局部变量

nonlocal 采用LEGB原则:
1.nonlocal 主要用来修改当前作用域上一级的局部变量
2.如果上一级空间没有该变量,会继续向上寻找
3.如果找不到,会直接报错

# 基本写法
def func():
    a = 16
    def inner():
        nonlocal a
        a = 61
    inner()
    print(a)
func()

# 不依赖 nonlocal 实现值的修改,必须是列表
def func():
    lst = [1,2,3]
    def inner():
        lst[-1] = 30
    inner()
    print(lst)
func()

5.闭包函数

为了延长局部变量的生命周期,执行脚本结束,再释放局部变量。

闭包函数:内函数使用了外函数的局部变量,外函数把内函数返回出来的过程,交闭包。里面的内函数就是闭包函数。
.
函数的普通参数是局部变量

def outer(val):
    def inner(num):
        return val + num
    return inner

func = outer(10)
res = func(15)
print(res)

6.匿名函数 lambda

用一句话来表达只有返回值的函数

# 语法格式
函数名 = lambda 参数 : 返回值

# 无参数
# 改造
func = lambda : 123
res = func()
print()

# 有参数
func = lambda n : type(n)
print(func("abc"))

# 带判断条件
func = lambda n : 真值 if条件 else 假值

func = lambda n : "偶数" if n % 2 == 0 else "奇数" 
res = func(18)
print(res) 

相关文章

网友评论

      本文标题:Python 函数(下)

      本文链接:https://www.haomeiwen.com/subject/sazzjktx.html