python第十一天

开始第二模块的学习:

装饰器 :

描述:

装饰器原则:

  1、不能修改被装饰的函数的源代码

  2、不能修改装饰的函数的调用方试

实现装饰器的需要:

  高阶函数+嵌套函数=装饰器

  高阶函数:

      类型I:将函数做为实参的函数,可以称为高阶函数

        

1 def fun_1(fun_2):#fun_1 为高阶函数
2     print(‘1‘)
3     fun_2()
4
5 def fun_2():
6     print(‘2‘)
7
8 fun_1(fun_2)

      类型II:返回值中包含函数名的函数,也可以称为高阶函数

      

def fun_3(fun):#fun_3 为高阶函数
    print(‘3‘)
    return fun

def fun_4():
    print(‘4‘)

#fun_3(fun_4)()#返回值可以直接运行
fun=fun_3(fun_4)#可以将返回值赋于一个变量
fun()#可以调用函数

  嵌套函数:

      在函数中定义一个新函数,这个函数称为嵌套函数

    

1 def fun_5():#fun_5 为嵌套函数
2     print(‘5‘)
3     def fun_5_1():
4         print(‘5.1‘)
5
6 fun_5()

最简单的装饰:

 1 def fun_2(fun):#传入fun_1的函数
 2     def function():
 3
 4         fun()
 5         print(‘in the fun_2......‘)#增加新的内容
 6
 7     return function
 8
 9 @fun_2#装饰fun_!  相当于fun_1=fun_2(fun_1)
10 def fun_1():
11     print("in the fun_1....")
12
13
14 fun_1()

装饰器: 模拟登陆认证

 1 #模拟网站登陆访问认证
 2 #
 3 name=‘abc‘
 4 password=‘123‘
 5 def certi(model):#装饰器
 6     def outr(fun):#装饰器加参数需要多加一层嵌套
 7         def login(*args,**kwargs):#为了兼容各类函数参数,添加 *args,**kwargs 不固定参数
 8             if model==‘password‘:
 9                 print(‘这是password认证‘)
10                 user_name = input(‘用户名:‘).strip()
11                 paswd=input(‘密码:‘).strip()
12                 if user_name==name and paswd==password:
13                     print(‘通过认证‘)
14                     return fun(*args,**kwargs)
15                 else:
16                     print(‘用户或密码错误 ,退出‘)
17                     exit()
18             elif model==‘lamp‘:
19                 print(‘这是lamp认证‘)
20                 return fun(*args,**kwargs)
21             else:
22                 print(‘认证出错‘)
23         return login
24     return outr
25
26
27 def indxe():
28     print(‘欢迎进入首页‘)
29
30 @certi(model=‘password‘)
31 def user():
32     print(‘欢迎进入用户页面:‘)
33
34 @certi(model=‘lamp‘)
35 def bbs(name):
36     print(‘欢迎%s登陆论坛!!‘%name)
37
38 indxe()
39 user()
40 bbs(name=‘yjj‘)

  

时间: 2024-10-12 21:23:30

python第十一天的相关文章

初学 Python(十一)——切片

初学 Python(十一)--切片 初学 Python,主要整理一些学习到的知识点,这次是切片. #-*- coding:utf-8 -*- ''''' 切片 ''' L = ['name','age','sex','address','company'] #取前2个 print L[0:2] print L[:2] #取倒数第一个 print L[-1] #取后两个 print L[-2:] #取倒数第二个 print L[-2:-1] print len(L) #隔一个数取一次,从第一个数开

Python进阶(十一)----包,logging模块

Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: ? 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文件夹就是包. 包的作用: ? 将文件夹/模块组织起来,来提高程序的结构性和可维护性. ? 目的不是运行,为了导入使用.包只是一种形式,包的本质就是一个模块 import: # 创建一个包,也会发生三件事: ''' 1. 将该aaa包内 __init__py文件加载到内存. 2. 创建一个以aaa命名

Python第二十一课(反射/元类)

Python第二十一课(反射/元类)    >>>思维导图>>>中二青年 反射reflect 什么是反射, 其实是反省,自省的意思 反射指的是一个对象应该具备,可以检测,修改,增加自身属性的能力 反射就是通过字符串操作属性 涉及的四个函数,这四个函数就是普通的内置函数 没有双下划綫,与print等等没有区别 hasattr getattr setattr delattr p = Person("jack",18,"man") #

python学习(十一)测试和调试

最近学习了python的错误处理和几种测试方法 1 try except 可以通过try except方式捕捉异常 try: print('try...') r = 10/0 print('result is :', r) except ZeroDiversionError as e: print('except is :', e) finally: print('finally ...') print('END') 可以捕捉不同类型的错误,编写多个except try: print('try.

笨办法学Python(十一)

习题 11: 提问 我已经出过很多打印相关的练习,让你习惯写简单的东西,但简单的东西都有点无聊,现在该跟上脚步了.我们现在要做的是把数据读到你的程序里边去.这可能对你有点难度,你可能一下子不明白,不过你需要相信我,无论如何把习题做了再说.只要做几个练习你就明白了. 一般软件做的事情主要就是下面几条: 1. 接受人的输入. 2. 改变输入. 3. 打印出改变了的输入. 到目前为止你只做了打印,但还不会接受或者修改人的输入.你也许还不知道"输入(input)"是什么意思.所以闲话少说,我们

【Python】Java程序员学习Python(十一)— IO

一.前言 io的内容其实还是有很多的,现在我也只是了解初步用法,当然详细内容还是应该参照官方api的: 官方api:https://docs.python.org/3/library/os.html. 中文api:http://python.usyiyi.cn/translate/python_352/library/os.html. 二.文件基本操作 文件的基本操作可以使用os和shuitl模块,里面有基本的函数满足一般要求. os.makedirs():创建文件夹,中间不存在的也会创建 os

Python学习(十一) Python数据类型:字典(重要)

字典dict: 字典其实就相当于java里面的Map,用来存储键值对的.其中存储的数据时无序的. 假如有这样的数据: t1=['name','age','sex'] t2=['tom',30,'male'] 通过zip(t1,t2)可以获取到这样的数据[('name','tom'),('age',30),('sex','male')] 字典定义是通过 {}进行的. 字典是Python当中唯一的映射类型(哈希表),字段对象时可变的,但是字典对象的键必须是不可变的,并且一个字典中可以包含不通类型的键

selenium python (十一)alert/confirm/prompt的处理(js中的弹出框)

webdriver中处理js所生成的alert.confirm以及prompt,采用switch_to_alert()方法定位到alert/confirm/prompt.然后使用text/accept/dismiss/send_keys进行操作 ①text:返回alert/confirm/prompt中的文字信息 ②accept:点击确认按钮 ③dismiss:点击取消按钮 ④send_keys:输入值,这个alert/confirm/prompt没有对话框就不能使用,否则会报错 eg:百度的设

Python学习十一:函数式编程

这也是我第一接触函数式编程这个概念,并不知道是干嘛的?好奇心驱使下学习了一下,有了大致的了解: 函数式编程自己的理解:就跟说话一样写程序,这个程序写出来可以直白的告诉人是要干嘛的. 以下是我读到的关于函数式编程的文章的描述: 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数![1] 函数式编程的准则:不依赖于外部的数据,而且也不改变外部数据的值,而是返回一个新的值给你.[2] 函数式编程的理念:把函数当成变量来用,关注于描述问题而不是怎么实现,这样可以让代码更易

python第十一天-----补:线程池

低版本: 1 #!/usr/bin/env python 2 import threading 3 import time 4 import queue 5 6 7 class TreadPool: 8 """ 9 将线程加入到队列中作为资源去完成任务 10 优点:简单好写容易理解 11 缺点:太尼玛多了..... 12 """ 13 def __init__(self, maxsize): 14 self.maxsize = maxsize 1