• 9.25 函数小结


    函数的定义

    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 获取索引+值

    面向过程编程

    类似流水线

  • 相关阅读:
    MySQL++:(转)mybatis 常用 jdbcType数据类型
    CF1556F Sports Betting (状压枚举子集DP)
    ICPC Greater New York Region 2020 F
    post方式实现导出/下载文件
    自定义一个v-if
    在vue项目中引用element-ui时 让el-input 获取焦点的方法
    element-select当下拉框数据过多使用懒加载
    vue强制刷新组件更新数据的方式
    .net core efcore dbfirst(sqlserver,mysql,oracle,postgresql)
    camunda安装配置mysql以及整合springboot
  • 原文地址:https://www.cnblogs.com/793564949liu/p/11588240.html
Copyright © 2020-2023  润新知