网站开发如何运用form表单,中国城乡建设部人力网站首页,集团门户网站建设方案,企业软文怎么写文章目录 一,闭包函数二,装饰器#xff08;重要#xff09; 三,递归 Python基础学习(1)基本知识 Python基础学习(2)序列类型方法与数据类型转换 Python基础学习(3)进阶字符串(格式化输出) Python基础学习(4)散列类型(无序序列) Python基础学习(5)流程控制 Python基础学习(6)函… 文章目录 一,闭包函数二,装饰器重要 三,递归 Python基础学习(1)基本知识 Python基础学习(2)序列类型方法与数据类型转换 Python基础学习(3)进阶字符串(格式化输出) Python基础学习(4)散列类型(无序序列) Python基础学习(5)流程控制 Python基础学习(6)函数基础与函数参数 Python基础学习(7)函数作用域与名称空间. Python基础学习(8)函数进阶-闭包/装饰器 Python基础学习(9)迭代器/生成器 一,闭包函数
闭: 封闭 嵌套函数
包: 对数据进行的操作函数(就是内层函数) 条件:
1.必须是一个嵌套函数
2.外层函数必须返回内层函数
3.内层函数必须操作外层函数数据# 大胃王比赛
food 0# 挑战碗数
def f1():global foodfood 1 # 需要修改每次吃完的次数# print(food)
f1()
print(food)
f1()
print(food)
# 没有封闭 很容易被修改
food 0
print(food)语法格式:def 外层函数名():def 内层函数名():代码块return 内层函数名 # 这里的返回值是外层函数# 闭包
def food1():bowl0def f():nonlocal bowlbowl5 # bowlbowl5return bowlreturn fafood1() # 获取函数里的数据内存地址
print(a()) # 内层函数第一遍运行
print(a()) # 内层函数第二遍运行
bowl0
print(a()) # 不会变了 在给函数被多次调用的过程中 让这些私有变量能够保持起持久性
# 判断 是否是闭包函数
print(a.__closure__) # cell 是闭包
print(food1.__closure__)#不是闭包
print(f.__closure__) # 报错 内层函数是闭包 但是因为被外层函数封闭起来了 无法直接查询二,装饰器重要 掌握了闭包 相当于装饰器就掌握好了 因为装饰器最基本的样子就是闭包函数 装饰器: 在不修改源代码和调用方式的情况下 给函数添加功能 器: 工具 装饰: 添加功能 开放: 扩展功能(增加功能) 封闭:对修改源代码封闭 开发一款程序 这个程序应该是可拓展 但是不能修改 要是想修改源代码 肯定这个程序就会终止运行
import time
def play(food, s):print(饿了就点饿了么)print(f这个夜宵{food}非常好吃)print(f外卖还有多少{s}秒送达)time.sleep(s) # 程序休眠 执行时间def get_time(f):#装饰器装饰play在不改变play的情况下def calc(*args, **kwargs):start time.time()f(*args, **kwargs)end time.time()print(end - start)return calcfun get_time(play)
fun(螺蛳粉, 3)def 煎饼果子():print(我是煎饼果子)def 火锅():print(我是火锅)def 加工(f): # 准备加工的东西 f形参 哪个函数需要添加功能def 加料():f() # 加工的食材拿出来print(加包卫龙) # 添加的功能return 加料 # 原本的东西加工后的结果装饰器是 Python 中一种强大且灵活的功能它的作用主要包括以下几个方面 代码复用装饰器可以将一些通用的功能封装起来然后应用到多个函数中实现代码的复用避免重复编写相同的代码。 增强函数功能通过装饰器可以在不修改原函数代码的情况下为函数添加额外的功能比如日志记录、性能统计、权限校验等。 解耦合装饰器可以将函数的核心逻辑与其他功能进行解耦合使得代码更加清晰、易于维护。 动态扩展装饰器可以在运行时动态地为函数添加或修改功能使得程序在不停止运行的情况下进行功能的扩展。 提高代码可读性通过装饰器可以将一些与核心逻辑无关的代码抽离出来使得函数的功能更加清晰明了提高代码的可读性。 面向切面编程AOP装饰器是实现面向切面编程的一种重要方式可以在不修改原函数代码的情况下为函数添加横切关注点比如日志、事务管理等。
总的来说装饰器是一种强大的工具可以帮助我们实现代码复用、功能增强、解耦合、动态扩展等目的提高代码的可维护性和可读性是 Python 编程中常用的技术手段之一。
三,递归
递归函数: 定义一个函数 函数内部自己调用自己
并且这个操作可以停止
写递归的时候要有明确递归出口
def factorial(n):if n0:return 1return n*factorial(n-1)
print(factorial(4))