python学习笔记之编程

python学习笔记之编程

昨日回顾

闭包函数

  1. 定义在函数体内部的函数
  2. 外部函数使用了内部函数的函数名作为返回值
  3. 内部函数调用了外部函数的名

装饰器

在不改变原功能的代码和调用方式,增加新的功能。

结构:

def 装饰器函数名(实际功能函数名):
    def 封包函数名(*args,**kwargs):
        接受返回值变量名 = 实际功能函数名(*args,**kwargs)
      	return 接受返回值变量名
    return 封包函数名

语法糖

实际功能函数名 = 装饰器函数名(实际功能函数名)
等于
@装饰器

修复技术

from functools import wraps
    def 装饰器函数名(实际功能函数名):
        @wraps(实际功能函数名)
        def 封包函数名(*args,**kwargs):
            接受返回值变量名 = 实际功能函数名(*args,**kwargs)
            return 接受返回值变量名
        return 封包函数名

0

今日学习内容

多层装饰器

def 装饰器函数名(实际功能函数名):
    def 封包函数名(*args,**kwargs):
        接受返回值变量名 = 实际功能函数名(*args,**kwargs)
      	return 接受返回值变量名
    return 封包函数名

def 装饰器函数名1(实际功能函数名):
    def 封包函数名1(*args,**kwargs):
        接受返回值变量名1 = 实际功能函数名(*args,**kwargs)
      	return 接受返回值变量名1
    return 封包函数名1

def 装饰器函数名2(实际功能函数名):
    def 封包函数名2(*args,**kwargs):
        接受返回值变量名2 = 实际功能函数名(*args,**kwargs)
      	return 接受返回值变量名2
    return 封包函数名2


@装饰器函数名
@装饰器函数名1
@装饰器函数名2
def 实际功能函数名():
    
运行先后顺序

从下往上依次传参,到最上一层装饰函数名时,
开始依次往下运行。

有参装饰器

就是给装饰器再外套一个函数,相当于将装饰器转换成一个被嵌套函数。

def 有参函数(需要的参数)
    def 装饰器函数名(实际功能函数名):
        def 封包函数名(*args,**kwargs):
            接受返回值变量名 = 实际功能函数名(*args,**kwargs)
            print(需要的参数)
            return 接受返回值变量名
        return 封包函数名

递归函数

本质:函数在一定条件下重复自己调用自己
a = 0  

def number()
	if a > 3:  # 设定一个停止条件(重要)
        reture
     else:
        global a
        a += 1
        number()
如果没有停止条件就会死循环,如没有递归深度保护,会影响电脑使用

1

递归练习

阶乘“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。”


def a(number):
    if number > 1:
        res = number * a(number - 1)
        return res
    else:
        return 1
    
print(a(66))

544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000(hahahahah)

算法之二分法

算法概念:研究并尝试用最优解去解决问题

二分法:最入门的算法
使用的数据集要求必须是按升序或降序
l1 = [1,3,6,8,12,65,88,1000]
首先:
用len检索元素数量,取中间值
def get_target(列表,需要查找的数):
	元素个数 = len(l1) // 2
 
然后利用列表索引原则的判断
if 列表 > l1[元素个数]:
    如果大于则保存右边列表
    列表1 = l1[元素个数+1:]
   
else 列表 < lz(元素个数) :
    如果小于则保留左边列表
    列表2 = l2[元素个数]

重复下去,每次列表都会被减少一半
到最后直接检测出该数据,当列表的长度为0时,便说明该列表,没有需要的那个数字
    

今日小结

努力学习,冲冲冲!

posted @   Eason辰  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示