python编程基础之二十八

装饰器:说白了就是闭包,但是内部函数调用外部变量调用的是函数,

好处:就是在不用修改原函数代码的前提下给函数增加新的功能

装饰器有两种写法

第一种:

 1 #被修饰的函数
 2 def say_hello(name):
 3     print(‘我就是人见人爱,花见花开的%s‘%name)
 4
 5 # 参数是被修饰函数
 6 def wrapper(func):     #1.定义装饰器
 7     def inner(name):   #2.定义闭包 在闭包中增加功能
 8         print(‘-‘ * 50)
 9         func(name)     #3.调用原函数实现原来的功能
10         print(‘*‘ * 50)
11     return inner       #4.返回增强功能的函数
12
13 say_hello = wrapper(say_hello) #5.获取增强功能的函数
14 say_hello(‘张三‘)         #6. 调用增强函数,实现功能

第二种:

 1 def wrapper(func):
 2   def inner(age1):
 3       #增加的功能
 4       if age1 < 0:
 5           age1 = 0
 6       #调用原函数
 7       func(age1)
 8   return inner
 9
10 @wrapper     #相当于 getAge = wrapper(getage)
11 def getAge(age):
12     print(age)
13 getAge(18)  #调用增强的函数

直接在被修饰的函数定义前加@修饰器函数名

多个修饰器函数修饰同一个函数

记得修饰顺序按照远近顺序就行,近的先修饰

 1 def wrapper1(func):
 2       print("wrapper1~~~~外部函数")
 3       def inner(a,b):
 4           print(‘wrapper1-----内部函数‘)
 5           func(a,b)
 6       return inner
 7
 8     def wrapper2(func):
 9          print("wrapper2~~~~外部函数")
10         def inner(a, b):
11             print("wrapper2~~~~内部函数")
12             func(a, b)
13         return inner
14
15     @wrapper1
16     @wrapper2
17     def text(num1,num2):
18         print(num1 + num2)
19
20     text(10,20)

递归:一个函数直接或间接调用自己,递归分为正向递归,逆向递归两个过程

一个递归一定包含两个部分:递归结束条件,递归调用自己

1 def  recurve(*args,**kw):
2       if 递归终止条件:   #递归终止条件必须在递归调用前
3           # to do
4        else:
5           #to do
6           recurve(参数)
7           #to do

原文地址:https://www.cnblogs.com/higer666/p/9451298.html

时间: 2024-07-31 10:35:37

python编程基础之二十八的相关文章

python编程基础之二十

字符串的其他常用方法: ord(char)  # 返回char字符对应的码值,可以是中文字符 chr(x)  # 输入一个unicode码,返回对应的字符 eval(str)  # 将str 中的内容以代码的形式返回 repr(x) 返回对象的str格式,适合机器执行 字符串格式化 %格式化: %[flags][width][.precision]typecode format格式化: [fill][align][sign][#][width][.precision][type] fill :填

ActionScript3游戏中的图像编程(连载二十八)

2.2.1 投影颜色与透明度的模拟 默认的投影滤镜看着比Photoshop的投影样式浑浊,究其原因,似乎是颜色太深所致.(图 2.11). 图 2.11 设置默认投影滤镜后的效果 下面回到Photoshop查看其默认的投影参数(图 2.12). 图 2.12 Photoshop默认投影样式的参数 茫茫人海,我还是第一眼发现了你--颜色样本块.同是黑色,RGB都等于0,怎么差别还这么大?看来是A通道--不透明度惹的祸.从图 2.12中,我们看到Photoshop里对阴影设置了75%的不透明度,那F

[原创]ActionScript3游戏中的图像编程(连载二十八)

2.2.1 投影颜色与透明度的模拟 默认的投影滤镜看着比Photoshop的投影样式浑浊,究其原因,似乎是颜色太深所致.(图 2.11). 图 2.11 设置默认投影滤镜后的效果 下面回到Photoshop查看其默认的投影参数(图 2.12). 图 2.12 Photoshop默认投影样式的参数 茫茫人海,我还是第一眼发现了你——颜色样本块.同是黑色,RGB都等于0,怎么差别还这么大?看来是A通道——不透明度惹的祸.从图 2.12中,我们看到Photoshop里对阴影设置了75%的不透明度,那F

Python之路(二十八):Web框架本质

Django前戏之Web框架本质及浅谈HTTP协议 Web框架本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # !/usr/bin/env python # -*- coding:utf-8 -*- # __Author__ Jianer import socket    def handle_reques

Python学习笔记(二十八)多线程

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143192823818768cd506abbc94eb5916192364506fa5d000 多任务可以由多进程完成,也可以由一个进程内的多线程完成. 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程. 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线程的支持,Python也不例外,并

python编程基础之二

交互式: 此处以windows为例:开始->运行->cmd,输入python 交互式界面 优点:即时,所见即所得 缺点:代码不可复用,根本无法进行维护 退出:exit() 代码是顺序执行: 从左至右,从上至下 python文件以  .py  结尾 python允许一行多句,每一句之间用分号(:)分隔,但是建议一行一句不使用分号 文件名尽量不要使用中文,print输出的时候可以使用中文,文件名不能使用空格python编码规范遵循PEP8(https://www.python.org/dev/pe

Python编程基础(二)

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: if 判断条件: 执行语句--else: 执行语句-- x=int(input("请输入成绩"))if x>60: print('好')else: print('不及格') 精确判断:需要用到多层if else循环练习:用if写出判断成绩的等级: 95 了不得 90-95 优秀 80-90 良好 60-80 刚刚好 60以下 加油 grad

Python+Selenium练习(二十八)-处理Alert弹窗

目标:如何通过Selenium方法处理网页Alert弹窗. 练习场景:和处理iframe类似,都是通过switch—_to方法.可以通过执行JS来增加一个弹窗. 具体代码: # coding= utf-8 import time from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.implicitly_wait(6) driver.get("https://www.b

Java并发编程系列之二十八:CompletionService

CompletionService简介 CompletionService与ExecutorService类似都可以用来执行线程池的任务,ExecutorService继承了Executor接口,而CompletionService则是一个接口,那么为什么CompletionService不直接继承Executor接口呢?主要是Executor的特性决定的,Executor框架不能完全保证任务执行的异步性,那就是如果需要实现任务(task)的异步性,只要为每个task创建一个线程就实现了任务的异