python--函数(二)、装饰器、

1.函数即变量

  函数即变量,hello为变量,输出的是一个内存地址,它把函数体存储在内存里;hello()是一个函数,函数名+小括号就是调用函数。

1  def hello():
2      print(‘nihao‘)
3  print(hello)
4  hello()

2. 高阶函数

  一个函数的入参是一个函数时,这个函数就是高阶函数。

1 def s_int(n):
2     return int(n)
3 def add(x,y,z):
4     print(z(x)+z(y))        #z是一个函数,把x、y的值传给z,然后z函数处理后把两个值相加
5 add(‘2‘,‘3‘,s_int)

3. 嵌套函数

  嵌套函数就是在函数内部再定义一个函数,注意是定义一个函数,而非是再调用一个函数。

1 def test1():
2     def test2():
3         print(‘test2‘)
4     print(‘test1‘)
5     test2()
6 test1()

4、装饰器

  装饰器实际就是装饰函数,它的作用是给别的函数增加新功能,却不改变原来函数的调用方式;

  下面是一个统计函数调用时间的函数,它通过装饰器在不改变原有函数调用方式的前提下,统计了运行时间。

 1 import time
 2 def test1(func):
 3     def deco():             #此函数进行运行时间计算
 4         start_time = time.time()
 5         func()
 6         stop_time = time.time()
 7         print(‘the func run time is %s‘ % (stop_time - start_time))
 8     return deco             #函数运行后返回deco变量
 9 @test1                      #调用装饰器,用在需要统计时间的函数前面
10 def bar():
11     time.sleep(2)
12     print(‘in the bar‘)
13 bar()                       #调用该函数时,执行了装饰函数,统计了运行时间

5. 递归函数

  一个函数子集调用自己就是递归函数,一个函数最多可调用自己999次,故其要有一个明确的结束条件,另递归函数的效率

  不高,尽量少用。

1 def test():
2     num = int(input(‘please enter a num:‘))
3     if num%2 == 0:
4         return True
5     else:
6         print(‘非偶数,请重新输入‘)
7         test()          #可以起到循环的作用
8 test()

6. 内置函数

  python默认定义好的函数

 1 #强制类型转换
 2 bool(‘s‘)   #bool类型
 3 int()       #整形
 4 float()     #小数
 5 str()       #字符串
 6 dict()      #字典
 7 list()      #列表
 8 set()       #集合
 9 tuple()     #元组
10
11 print(dir(1))              #打印传入对象的可调用方法
12 print(eval(‘[]‘))         #执行python代码,只能执行简单的,定义数据类型和运算
13 print(exec(‘def a():pass‘))   #执行python代码
14
15 filter(func,[1,2,3,4])      #根据前面的函数处理逻辑,依次处理可迭代回想里的每一个元素
16                             #返回true,则返回
17 print(list(filter(func,[1,2,3,4])))     #调用方式
18 map(func,[1,2,3,4])         #根据前面的函数处理逻辑,依次处理后面可迭代对象里面的每个元
19                             # 素,保存前面函数返回的所有结果
20 print(locals())             #返回局部变量
21 print(globals())            #返回所有全局变量,返回一个字典
22 print(max(111,12))          #取最大值
23 print(round(11.11,2))       #取几位小数
24 print(sorted([2,31,34,6,1,23,4]))   #排序
25 print(sorted(dic.items()))    #按照字典的key排序
26 print(sorted(dic.items(),key=lambda x:x[1]))    #按照字典的value排序

7、模块

  模块其实就是一个python文件,导入模块的本质是把Python文件从头到尾执行一遍

#模块导入方式import os               #方法一,导入整个模块os.path.exists(‘xxx‘)   #调用os下的函数

from os import path     #方法二,直接调用os下的某个函数

from day5.model import hello    #导入day5文件夹下的model文件中的hello方法hello()

  random模块

1 import random
2 print(random.random())        # 随机浮点数,默认取0-1,不能指定范围
3 print(random.uniform(1, 5))     # 随机取浮点数,可以指定范围
4 print(random.randint(1, 20))    # 随机整数
5 print(random.randrange(1, 20))   # 随机产生一个range
6 print(random.choice([1,2,3,4,5]))  # 随机取一个元素
7 print(random.sample([1,2,3,4,‘6‘], 3))  # 从序列中随机取几个元素,返回的是一个list
8 x = [1, 2, 3, 4, 5, 6]
9 random.shuffle(x)            # 洗牌,打乱顺序,会改变原list的值

  json模块

  json和python的字典类型,但是json里面只能是双引号,不能是单引号,可以通过在线格式验证来判断格式。

1 import json
2
3 print(json.dumps(dic))      # 把字典转成json串
4 print(json.loads(s_json))   # 把json串转换成字典
5
6 print(json.dump(dic, f))  # 把字典转换成的json串写到一个文件里面
7 print(json.load(f))  # 从文件中读取json数据,然后转成字典
时间: 2024-11-07 09:46:28

python--函数(二)、装饰器、的相关文章

python函数、装饰器、迭代器、生成器

5月21日,请假结婚,然后性格惰性来了,不怎么想看视频和笔记,性格中的弱点开始出现,开始做的不错,渐渐开始松懈,直至放弃--- 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递,它的应用形式也被称为高阶函数,函数的特性如下: a. 可以被引用 1 # def foo(): 2 # print('from foo') 3 # 4 # func = foo

五、python函数、装饰器、内置函数、json及模块

一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错2.递归必须有一个明确的结束条件3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少4.递归效率不高,少用递归 eg:def test1(): num = int(input('please enter a number:')) if num%2==0:#判断输入的数字是不是偶数 return True #如果是偶数的话,程序就退出了,返回true print('不是偶数请重新输入!') r

Python函数之装饰器

装饰器 一.装饰器的意义 比如:以下函数是供我们调用的,但是我们需要在每个函数中都添加同一个功能,该如何做到呢? 对于函数开放封闭原则,我们一般不允许修改.所以我们引入了装饰器: def outer(func): def inner(): print("添加在原函数之前") r = func() #保留原函数的返回值 print('添加在原函数之后') return r #将保留的返回值返回回去 return inner @outer #等价于f1 = outer(f1) def f1

Python函数加工厂-装饰器

引言: 函数和装饰器好比程序界的加工厂: 1.函数一般可用来加工一种或者多种数据类型的数据:字符串.数字.列表.字典等 举一个简单例子:已知半径求面积 def s(r): s = 3.14 * r * r return s 调用s函数:输入4,输出半径为4的圆的面积.a相当于面积的容器 a = s(4) print(a) 2.装饰器是用来装饰函数的函数.其需要输入的原材料为某个函数 以下是装饰器的固定格式: 1 def timer(func): 2 def inner(*args,**kwarg

python函数作用域+装饰器

今天记录的是一个小小的知识点 ->函数作用域+装饰器: LEGB:L>E>G>B L;local函数内部作用域 E:enclosing函数内部与内嵌函数之间 G:global全局作用域 B:build-in内置作用域 Coding && Result: 闭包(Closure):内部函数中对enclosing作用域的变量进行引用. 闭包的作用: 1)封装 2)代码复用 函数的实质和属性: 1)函数是一个对象 2)函数执行完成之后内部变量回收 3)函数是对象就有属性 4

Learn Python—函数(装饰器)

装饰器 开放封闭原则 开放:对函数的扩展是开放的 封闭:对函数的修改是封闭的 装饰器的作用 在不更改原函数调用方式的前提下,对原函数添加新功能 # ①引子--为什么要有装饰器 为了在不修改原函数的基础上为函数添加新功能,产生了装饰器 # ②简单装饰器 def deco(f): def wrapper(): """原函数前添加的功能""" f() """原函数后添加的功能""" retur

python函数_装饰器

理解: 装饰器:我在知乎看到这样一个比方(我们的函数好比内裤,作用是遮羞.但在一些特定的环境,内裤明显满足不了我们的需求,冬天它没法为我们防风御寒.所以有了长裤,装饰器就像长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效) 装饰器是对原函数的一种扩展,本质是一个python函数,在原函数不需要做任何代码变动的前提下增加额外功能,在场景:插入日志.性能测试.事务处理.权限校验等应用广泛.遵守封闭开放原则,对源代码修改封闭,对功能外部增加开放. 需求: 在电商平台中,我们可以看到,在不同

python函数下篇装饰器和闭包,外加作用域

装饰器和闭包的基础概念 装饰器是一种设计模式能实现代码重用,经常用于查日志,性能测试,事务处理等,抽离函数大量不必的功能. 装饰器:1.装饰器本身是一个函数,用于装饰其它函数:2.功能:增强被装饰函数的功能. 装饰器需要遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被装饰函数的调用方式 装饰器 = 高阶函数+函数嵌套+闭包 高阶函数 1.函数接受的参数是一个函数名 2.函数的返回值是一个函数名 3.只有上述条件满足一个就是高阶函数 def foo(

Python函数(八)-装饰器(一)

装饰器通过函数来定义,用来装饰函数 装饰器不改变被装饰函数的源代码和运行方式 如何实现这个效果呢? # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import time def timer(func): #定义一个装饰器 def deco(): start_time = time.time() func() stop_time = time.time() print("the run time is %s"%(

doraemon的python 函数与装饰器(哎呀,忘记传了)

5.10 函数中高级 5.10.1 函数可以当做返回值 def func():    print(123)    def bar():    return func?v = bar()?v() 5.10.2 闭包 def func(name):    def innner():        print(name)    return inner?v1 = func('liujia')v1()v2 = func('eric')v2() 总结: 函数执行的流程分析(函数式谁创建的) 闭包概念:为函