Python函数高级

函数高级

1.断点

# 启动debug
# Ctrl+F5 重新启动程序 
# Ctrl+F2 停止调试
# F9 调试到下一个断点
# F8 单步调试
# ALT+shift+F7 进入函数自己定义的函数内
# F7 进入函数内部
# shift+F8 跳出函数
# ALT+F8 搜索数据

2.有名函数

#简单加法
def add(x,y):
	return x+y
print(add(1, 2))

3.匿名函数

基本使用:

# 简单加法
print((lambda x, y: x + y)(2, 3))

结合内置函数使用:(重点)

# 比较薪资
salaries= {
	'wang':20000,
	'yun':200008,
	'fei':199999
}
# 我们要比较薪资,求薪资最高的那个人名:即比较的是value,但结果取得是key
print(max(salaries)) # 默认max函数比较的是key的值,返回的也是key的值

#我们需要获取字典的value值,这样才会比较value
## 定义新的规则:获得key,返回字典对应的值
def func(key):
    return salaries[key]
## key= 自己定义的比较规则(函数名) --> 在这里比较的是 key对应的value ,返回的是key的值
print(max(salaries,key=func))

#匿名函数定义规则
print(max(salaries,key=lambda key:salaries[key]))

#薪资反序
print(sorted(salaries,reverse=True)) # 默认情况下函数都是以key去进行比较的
print(sorted(salaries,key=lambda key:salaries[key],reverse=True)) #修改规则后的,比较对象从key变成value

4.递归函数

定义:

递归函数就是一个重复的过程,应该在满足某种条件下结束重复,开始进入递归阶段

#案例
L=[1,[2,[3,[4,[5,[6,[7,[8]]]]]]]]

def search(n):
    for index in n:
        if type(index) is int: #为整数
            print(index,end=' ')
        else:   #为数组
            search(index)

search(L)

总结:

  1. 递归是函数定义里面嵌套函数调用
  2. 递归和循环的区别:循环需要确定次数,而递归只需要确定结束条件就行

5. 闭包函数

定义:

在定义函数内定义,在外部进行调用 (通过地址去调用函数)

1.基本使用方法

# 闭包函数
def out():
    print('外部函数调用')
    def inner():
        print('内部函数调用')

    return inner #返回内部函数的地址


inner=out() #将返回的内部函数地址进行相同名称的赋值
inner() #地址() --> 相当于去调用这个函数

2.为函数体传数值 (适用于每次都是一样的参数)

#例示
def out(x,y): #传入的数值就相当于多加了一种调味(十三香)
    def func():
        print(x+y) # 多加十三香(那两个数值)对应的func
    return func

func=out(3,4) #获得特定调味(特定数值)的肉馅(闭包函数)

func()

6.装饰器

定义:

装饰器是闭包函数的进一步扩展利用,装饰器的要求要高于闭包函数:

​ 1、不修改被装饰对象的源代码

​ 2、不修改被装饰对象的调用方式 (地址赋时的巧妙利用)

修饰器在后,被修饰函数在前

# 修饰器后,被修饰函数在前
#导入datetime模块
from datetime import datetime
# func()
# 修饰器后,被修饰函数在前# 计算1-900000相加所消耗的时间
#未修饰的函数
def for1(n):
    sum1=0
    for i in range(1,n+1):
        sum1+=i
    print(sum1)

#计时修饰器
def run_time(func): #传入原来的函数进行正常使用
    def new_func(n): # 在使用原函数的基础上,进行其他功能的添加
        start_time = datetime.now()
        func(n)
        end_time = datetime.now()

        time1= end_time - start_time
        print('相差的时间为%s'%time1)

    return new_func #返回经过修饰的新函数的地址
for1=run_time(for1) # 避免修改原函数的调用方式

for1(9000000)

修饰器在前,被修饰函数在后

# 修饰器后,被修饰函数在前
#导入datetime模块
from datetime import datetime
# func()
# 修饰器后,被修饰函数在前# 计算1-900000相加所消耗的时间
#计时修饰器
def run_time(func): #传入原来的函数进行正常使用
    def new_func(n): # 在使用原函数的基础上,进行其他功能的添加
        start_time = datetime.now()
        func(n)
        end_time = datetime.now()

        time1= end_time - start_time
        print('相差的时间为%s'%time1)

    return new_func #返回经过修饰的新函数的地址
#@修饰器名字 --> 直接进行修饰
@run_time
def for1(n):
    sum1=0
    for i in range(1,n+1):
        sum1+=i
    print(sum1)


#for1=run_time(for1)  底层自动替换

for1(9000000)

图片理解:博客使用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
e(1,n+1):
sum1+=i
print(sum1)

#for1=run_time(for1) 底层自动替换

for1(9000000)


图片理解:博客使用

[外链图片转存中...(img-Ho5tZXy9-1718639064088)]

[外链图片转存中...(img-VyqWvzV3-1718639064089)]

相关推荐

  1. 案例学Python:filter()函数的用法,高级

    2024-06-18 06:04:01       50 阅读
  2. MySQL 高级函数

    2024-06-18 06:04:01       46 阅读
  3. SQL高级:窗口函数

    2024-06-18 06:04:01       63 阅读
  4. 函数高级(C++)

    2024-06-18 06:04:01       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 06:04:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 06:04:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 06:04:01       87 阅读
  4. Python语言-面向对象

    2024-06-18 06:04:01       96 阅读

热门阅读

  1. vue 修改页面 刷新页面 增删改 provide / inject

    2024-06-18 06:04:01       39 阅读
  2. Elasticsearch在日志分析中的神奇之旅

    2024-06-18 06:04:01       35 阅读
  3. super().__init__()的解析和作用

    2024-06-18 06:04:01       34 阅读
  4. awtk界面实现下拉屏功能

    2024-06-18 06:04:01       40 阅读
  5. linux 压缩命令之tar工具的基本使用

    2024-06-18 06:04:01       37 阅读
  6. 【Linux】I/O多路复用

    2024-06-18 06:04:01       37 阅读
  7. 微调大模型 - 面向学术论文的AI大模型

    2024-06-18 06:04:01       29 阅读
  8. MySql修改最大连接数

    2024-06-18 06:04:01       40 阅读
  9. 系统安全!

    2024-06-18 06:04:01       32 阅读
  10. 2.负载压力测试

    2024-06-18 06:04:01       29 阅读
  11. 工具清单 - IDE工具

    2024-06-18 06:04:01       44 阅读