第一阶段:Python开发基础 函数内容总结大纲

函数的定义

def 函数名():
    code
    return 返回值

定义函数的三种方法

  1. 有参函数
  2. 无参函数
  3. 空函数

函数返回值

  1. return 终止函数
  2. 返回值 可以返回多个值, 以元组形式存储
  3. 默认返回None

Nonetype ....

函数调用

函数名()

函数的参数

形参

描述意义

位置形参

一个一个从左到右

默认形参

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

实参

具有具体的值

位置实参

一个一个从左到右传值给形参

关键字实参

键值对的形式传给形参 ; 关键字实参必须放在位置实参的后面

可变长参数

*

形参

接收多余的位置实参,以元组的形式存储

实参

打散元组,以位置实参的形式传参给形参

扫描二维码关注公众号,回复: 7032863 查看本文章

**

形参

接收多余的关键字实参,以字典的形式存储

实参

**{'a':1} --> a=1

打散字典,以关键字实参的形式传给形参(形参必须得有这个key的形参名)

函数对象

  1. 引用
  2. 函数的参数
  3. 函数的返回值
  4. 容器类元素

函数对象 是 函数名 == 变量名

函数的嵌套

def f1():
    def f2():
        pass

名称空间和作用域

  1. 内置
  2. 全局
  3. 局部

执行顺序: 内置 --> 全局 --> 局部

查找顺序: 当前 --> 局部 --> 全局 --> 内置

全局作用域:

局部作用域

  1. 全局作用域(x=1)和局部作用域的(x=3)毫无关联
  2. 局部作用域1的(x=1)和局部作用与2的(x=3)毫无关联

闭包函数

把函数A和变量x包在函数B内部,然后通过函数B的返回值返回出函数A对象

def B(x):
    # x = 1 
    def A():
        print(x)
        pass
    return A

装饰器

用来给函数加功能的,他的本质也是函数

  1. 不改变被装饰函数的源代码
  2. 不改变被装饰函数的调用方式
def outter(func):
    def wrapper(*args,**kwrags):
        # 逻辑
        res = func(*args,**kwargs)  # func是被装饰的函数
        return res
    return wrapper

@outter
def index():
    pass



def sanceng(engine):
    def outter(func):
        def wrapper(*args,**kwrags):
            # 逻辑
            res = func(*args,**kwargs)  # func是被装饰的函数
            return res
        return wrapper
    return outter

@sanceng(engine)
def index():
    pass

迭代器

可迭代对象: 具有iter方法的对象, 可迭代对象不一定是迭代器对象

迭代器对象: 具有iter和next方法的对象, 迭代器对象一定是可迭代对象, 迭代器对象加上iter方法还是迭代器本身

for 循环原理

for i in lt:

  1. 把lt变成迭代器对象
  2. 然后迭代使用next方法获取每一个元素
  3. 捕捉异常中断while循环

三元表达式

print(1) if i > 10 else print(2)

列表推导式

[i for i in range(10)] # 0-9已经拿出来了

字典生成式

{k:v for k,v in dic.items()}

生成器表达式

(i for i in range(10)) # 不去使用next取值,是没有值的

生成器

自定制的迭代器

def func():

​ yield

yield:

1. 暂停函数,遇到下一个yield继续运行函数体代码
  1. 具有返回值
  2. 让函数()变成生成器对象

return:

1. 终止函数
  1. 返回值

匿名函数

没有名字的函数 lambda 参数:代码块

一般不单独使用,与 max/min/map/filter/sorted联用

递归

函数调用函数本身,但是必须得有结束条件

内置函数

内置函数是直接用的,属于python解释器的

数据类型的内置函数只有数据类型本身才能使用

enumerate()

面向过程编程

流水线

优点: 思路清晰

缺点: 可扩展性差 ; 功能与功能之间不独立 ; 调试麻烦

猜你喜欢

转载自www.cnblogs.com/foreversun92/p/11359938.html