函数 阶段总结

目录

  • 函数的定义
  • 函数的三种定义方式
    • 空函数
    • 有参函数
    • 无参函数
  • 函数的调用
  • 函数的返回值
  • 函数的参数
    • 形参

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

函数的定义

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没有半毛钱关系

x = 1

def f1():
    x = 3

f1()
print(x)

局部作用域

局部1x和局部2的x没有半毛钱关系

def f1():
    x = 1
    def f2():
        x = 3

def f3():
    x = 4

global

x = 1

def f1():
    global x  # 让下面的x变成全局的x
    x = 3

f1()
print(x)

nonlocal

def f1():
    x = 1
    def f2():
        nonlocal x
        x = 3

def f3():
    x = 4

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

闭包函数

def a(x):

    def b():
        print(x)
    return b

c = a(100)
x = 20
c()

装饰器

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

二层装饰器

import time

def index(x):

    return 123

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)
res = index(10)  # 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(10)
def index():
    pass

迭代器

可迭代对象

含有iter方法 --》除了数字

迭代器对象

含有iter和next方法的 --》 文件

三元表达式

列表推导式

字典生成式

生成器表达式

g = (i for i in range(10))

print(next(g)) # g.__next__()

生成器

含有yield的函数

yield

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

递归

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

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

递归能干的事情,绝大多数能用循环代替

匿名函数

lambda 参数:返回值

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

内置函数

enumerate 获取索引+值

面向过程编程

类似与流水线

原文地址:https://www.cnblogs.com/allenchen168/p/11586954.html

时间: 2024-08-30 15:07:49

函数 阶段总结的相关文章

python学习之函数阶段

python 3 函数 函数是组织好的,可以被重复利用的,用来实现单一.或者相关联功能的一段代码. 函数能提高应用的模块性和代码的重复利用率,避免相同功能重复书写,节省空间. 定义一个函数 函数代码块以def关键字开头,后接函数名和(): 任何传入参数必须放在()中,()中可以定义参数 return表示函数结束,选择性地返回一个值(不选择返回值则默认为None)给调用方. 函数调用 需要调用自己定义的函数时,用函数名+()来调用()内可以传递参数 参数传递 位置传参 不定长参数 默认参数 关键字

python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象

今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): return x**2 y=func(10) print(y) def foo(): return None res=foo() print(res) def foo(): return{'a':1} res=foo() print(res['a']) def foo(): return {'a':1},1,'a',[1,2] res=foo() p

AngularJS指令中的compile与link函数解析

AngularJS指令中的compile与link函数解析 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. 原文地址 angularjs里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为web components的先驱者. 网上已经有很多介绍怎么使用指令的文章以及相关书籍,相互比较的话,很少有介绍compile与link的区别,更别说pre-link与post-lin

Python基础(6)_函数

一 为何要有函数? 不加区分地将所有功能的代码垒到一起,问题是: 代码可读性差 代码冗余 代码可扩展差 如何解决? 函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用 结论:函数使用必须是:先定义,后调用 python中函数定义方法: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字 test:函数名 ():内可定义形参 "":文档描述(非必要,但是强烈建议为你的函数

angularjs指令中的compile与link函数详解补充

通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. angularjs里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为web components的先驱者. 网上已经有很多介绍怎么使用指令的文章以及相关书籍,相互比较的话,很少有介绍compile与link的区别,更别说pre-link与post-link了. 大部分教程只是简单的说下compile会在ng内部用到,而且建

【转】angularjs指令中的compile与link函数详解

这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. angularjs里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为web components的先驱者. 网上已经有很多介绍怎么使用指令

AngularJS学习之compile与link函数详解

通常大家在使用 ng 中的指令的时候,用的链接函数最多的是 link 属性,下面这篇文章将告诉大家 complie , pre-link , post-link 的用法与区别,希望对大家学习AngularJS有所帮助. angularjs 里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为 web components 的先驱者. 网上已经有很多介绍怎么使用指令的文章以及相关书籍,相互比较的话,很少有介绍 compile 与 link 的区别,更别说 pre-link 与 po

Python函数初级

函数 1. 必须遵循的原则:  先定义,再使用  ,函数的定义,与变量的定义相似, 在定义函数阶段,只检测语法,不执行代码, 如果语法错误,也不能执行,如果逻辑有错误,也不能执行 只要定义了,不管在哪都可以执行, 只有在函数名加括号的时候在执行 结果 ----------------------------------------------------------------------------------------- 2. 函数返回值 函数体最终要有一个结果,返回回来,要加return

走入计算机的第十八天(函数的参数)

一  形参和实参 1.形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元.因此,形参只在函数内部有效.函数调用结束返回主调用函数后则不能再使用该形参变量 2.实参可以是常量.变量.表达式.函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参.因此应预先用赋值,输入等办法使参数获得确定值 二   位置参数: 1 按照从左到右的顺序依次定义的参数,必须被传值,多一个不行,少一个也不行  ,与形参一 一对应叫做位置参数    2关键字