函数小结

目录

  • 函数的定义
  • 函数的三种定义方式
    • 空函数
    • 有参函数
    • 无参函数
  • 函数的调用
  • 函数的返回值
  • 函数的参数
    • 形参
      • 位置形参
      • 默认形参
    • 实参
      • 位置实参
      • 关键字实参
  • 可变长参数
    • *
    • **
  • 函数对象
    • 引用
    • 容器类元素
    • 函数的返回值
    • 函数的参数
  • 函数嵌套
  • 名称空间和作用域
    • 内置名称空间
    • 全局名称空间
    • 局部名称空间
    • 执行顺序
    • 搜索顺序
    • 全局作用域
    • 局部作用域
    • global
    • nonlocal
  • 闭包函数
  • 装饰器
    • 二层装饰器
    • 两层装饰器模板
    • 三层装饰器
  • 迭代器
    • 可迭代对象
    • 迭代器对象
  • 三元表达式
  • 列表推导式
  • 字典生成式
  • 生成器表达式
  • 生成器
  • 递归
  • 匿名函数
  • 内置函数
  • 面向过程编程

函数的定义

def 函数名():
    pass

函数的三种定义方式

空函数

def func():
    pass

有参函数

def func(args):
    pass

无参函数

def func():
    pass

函数的调用

函数名()

函数的返回值

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

函数的参数

形参

位置形参

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

默认形参

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

实参

位置实参

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

关键字实参

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

可变长参数

*

*形参:接受多余的位置实参,用元组接受

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

**

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

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

def func(*args,**kwargs):  # 接收所有多余的值
    pass

函数对象

def func():
    pass

引用

f1 = func

容器类元素

lt = [func]

函数的返回值

def f2():
    return func

f3 = f2()

函数的参数

def f2(func):
    pass

f2(func)

函数嵌套

def f1():
    def f2():
        pass

名称空间和作用域

内置名称空间

内置函数

全局名称空间

除了内置和局部都是全局

局部名称空间

函数内部的

执行顺序

内置》全局》局部

搜索顺序

从当前开始 局部》全局》内置

全局作用域

全局的x和局部的x没有关系

局部作用域

局部1和局部2的x没有关系

global

nonlocal

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

闭包函数

def a():
    x =10
    def b():
        print(x)
    return b

装饰器

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

二层装饰器

import time
def index():
    pass

def time_count(func):
    def wrapper(*args,**kwargs):
        start = time.time()
        res = func(*args,**kwargs)
        end = time.time()
        print(end - start)
        
        return res
    
    return wrapper

index = time_count(index)
index()  # wrapper()

两层装饰器模板

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


@deco
def index():
    pass
        

三层装饰器

def sanceng(x):
    def deco(func):
        def wrapper(*args,**kwargs):
            res = func(*args,**kwargs)
            return res
        return wrapper
    return deco


@sanceng(x)
def index():
    pass
        

迭代器

可迭代对象

含有iter方法的(除了数字)

迭代器对象

含有iter和next的方法 (文件)

三元表达式

列表推导式

字典生成式

生成器表达式

g = [123,2,3,4]
print(next(g))  # g.__next__()

生成器

含有yield的函数

  1. 暂停函数,
  2. 一个next可以取一个yield的值

递归

函数调用函数本身:有退出条件

count = 0
def a():
    print(count)
    count +=1
    if count == 100:
        return
    a()

递归能做的事,绝大部分能用循环代替

匿名函数

lambda 参数:返回值

一般与max/min/filter/map/sorted/sum

内置函数

enumerate获取索引+值

面向过程编程

类似流水线

你可能感兴趣的:(函数小结)