码迷,mamicode.com
首页 > 其他好文 > 详细

9.25 函数小结

时间:2019-09-26 00:20:57      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:依次   return   关键字实参   嵌套   def   cal   函数嵌套   fun   一个   

函数的定义

def 函数名():
    pass

函数的三种定义方式

空函数

def f():
    pass

有参函数

def f(x):
    print(x)

无参函数

def f():
    print()

函数的调用

函数名()

函数的返回值

1.return可以返回值
2.return可以终止函数
3.return可以返回多个值,用元组返回

函数的参数

形参

位置形参

从左到右依次接收位置实参

默认形参

具有默认值,必须放在位置形参后面

实参

位置实参

从左到右依次传值给位置形参

关键字实参

按照形参名传值,必须在位置实参后面

可变长参数

*

*形参

接收多余位置实参,用元组接收

*实参

打散可迭代对象,当作位置实参传给形参

**

**形参
接收多余关键字实参,用字典接收

**实参
打散字典,当作关键字实参传给形参

*形参**形参
接收所有多余参数

函数对象

def func():
    pass

引用

f1 = func

作为容器类元素

lt = [func]

作为函数返回值

def f2():
    return func
f3 = f2()

作为函数参数

def f2(func):
    pass
f2(func)

函数嵌套

def f1():
    def f2():
        pass

名称空间与作用域

内置名称空间

内置函数

全局名称空间

除了内置和局部,剩下的都是全局

局部名称空间

函数内部的

执行顺序

内置→全局→局部

搜索顺序

当前位置:局部→全局→内置→报错

全局作用域

全局与局部没有联系

局部作用域

内局部与外局部没有联系

global

让全局与局部进行转换

nonlocal

让内局部与外局部进行转换

可变数据类型会打破作用域关系

闭包函数

def a(x):
    def b():
        print(x)
    return b
c = a(100)
c()

装饰器

1.本质就是函数
2.不修改源代码
3.不改变调用方式

二层装饰器

二层装饰器模版

def deco(func):
    def wrapper(*args,**kwargs):
        res = func(*args,**kwargs)
        return res
    return wrapper
    
@deco
def index()
    pass

三层装饰器

迭代器

可迭代对象

含有iter方法的 → 除了数字

迭代器对象

含有iter和next方法的 → 只有文件

三元表达式

列表推导式

字典生成式

生成器表达式

g = (i for i in range(10)
print(next(g)) ##g.__next__()

生成器

含有yield的函数

yield

1.暂停函数
2.一个next可以拿到一个yield值

递归

函数调用函数本身,要有退出条件

匿名函数

lambda 参数:返回值

内置函数

enumerate 获取索引+值

面向过程编程

类似流水线

9.25 函数小结

标签:依次   return   关键字实参   嵌套   def   cal   函数嵌套   fun   一个   

原文地址:https://www.cnblogs.com/793564949liu/p/11588240.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!