1. 一、内置函数补充
    1callable()
    检测传递的参数是否可以被调用。
    def f1()
    pass
    可以被调用
  2.  
  3. f2 = 123
    不可以被调用
  4.  
  5. 2chr()和ord()
    chr()将ascii码转换成字符,ord()将字符转换成acsii
    2.7chr()和ord()用来翻译参数和ascii码的对应关系。
    例:
    r = chr(65)
    print(r)

    r = ord("B")
    print(r)
  6.  
  7. 实例:随机验证码
    import random #用来生成随机数的模块
    li = []
    for i in range(6):
    r = random.randrange(0,5)
    if r == 2 or r == 4:
    num = random.randrange(0,10)
    li.append(str(num))
    else:
    temp = random.randrange(65,91) #在给定的范围内随机生成数字,以acsii码大写字母的范围进行随机数生成
    c = chr(temp) #使用chr对数字转化成字符
    li.append(c)
  8.  
  9. print ("".join(li)) #使用join进行列表中元素拼接
  10.  
  11. 3compile()
    把一个字符串编译成python代码
    例:
    s = "print(123)"
    r = compile(s,"<string>","exec")
    print(r)
  12.  
  13. 解释器执行时的步骤:
    第一步:读取文件内容到内存(类型str,类似open打开)
    第二部:将字符串编译成特殊的代码
    第三部:执行代码
  14.  
  15. 4eval()
    将接收到的一个字符串当作一个表达式,计算并拿出结果
    例:
    s = "8*8"
    ret = eval(s)
    print (ret)
  16.  
  17. 5exec()
    用来执行由compile编译而来的代码;如果接受到的是一个字符串,那么就在内部将字符串编译成代码,然后执行。
    例:
    s = "print(123)"
    r = compile(s,"<string>","exec")
    exec(r)
  18.  
  19. 6delattr()
    反射,delattr,getattr,setattr,hatattr
  20.  
  21. 7dir()
    快速查看一个对象提供了哪些功能
    例:
    dirlist
  22.  
  23. 8help()
    查看一个对象提供的功能的详细解释
    例:
    helplist
  24.  
  25. 9divmod()
    计算两个数相除,返回商和余数的元组
    例:
    97条数据,每页显示10条,需要多少页?
    r = divmode(97,10)
    print(r)
  26.  
  27. 10isinstance()
    判断一个对象是否是某个类的实例
    例:
    s = "alex"
    r = isinstance(s,srt)
    print(r)
  28.  
  29. 11filter()
    filter(函数,可迭代的对象)
    循环第二个参数,用参数中的每一个元素作为实际参数传给第一个参数函数进行执行,如果函数返回True则将这个元素加入列表,如果返回False就抛弃这个元素,最终形成一个列表返回
    1
    def f2(a):
    if a>22:
    retuen True
    li = [11,22,33,44,55]
    ret = filter(f2,li)
    print(list(ret))
  30.  
  31. 2
    li = [11,22,33,44,55]
    result = filter(lambda a:a>33,li) #lambda表达式自动return
    print(list(result))
  32.  
  33. 12map()
    map(函数,可迭代的对象)
    自动循环,对可迭代对象的每一个元素用传入的函数进行处理,将函数的返回值添加到结果中。
    1
    def f1(a):
    return a+100
  34.  
  35. li = [11,22,33,44,55]
    result = map(f1,li)
    print(list(result))
  36.  
  37. 2
    li = [11,22,33,44,55]
    result = map(f1 = lambda a:a+100,li)
    print(list(result))
  38.  
  39. 13globals()、locals()
    globals代表所有的全局变量
    locals代表所有的局部变量
    例:
    NAME = "ALEX"
    def show():
    a = 123
    c = 123
    printglobals())
    printlocals())
    show()
  40.  
  41. 14hash()
    根据传入参数生成hash值,一般用户字典的key来保存,其他所有语言一般都适用
  42.  
  43. 15max()、min()、sum()
    max用来取列表中的最大值
    min用来取列表中的最小值
    sum用来求列表中所有元素的和
  44.  
  45. 16object()
    是所有类的父类
  46.  
  47. 17pow()
    用来求平方
    例:
    2**10
  48.  
  49. 等同于
  50.  
  51. r = pow210
  52.  
  53. 18reversed()
    进行反转,例如对列表中的元素进行反转
  54.  
  55. 19round()
    对数字进行四舍五入
  56.  
  57. 20slice()
    对字符串进行切片
  58.  
  59. 21sorted()
    对列表进行排序
  60.  
  61. 22zip()
    将多个列表进行混合,相同位置的所个元素组成一个元组作为一个元素,如果相同位置只有一个元素则不组合。
    例:
    l1 = ["alex",11,22,33]
    l2 = ["is",11,22,33]
    l3 = ["sb",11,22,33]
    r = zip(l1,l2,l3)
    temp = list(r)[0]
    ret = " ".join(temp)
    print(ret)
  62.  
  63. 整理:
    必须会的内置函数:
    abs(),all(),any(),bin(),bool(),bytes(),chr(),dict(),dir(),divmod(),enumerate(),eval(),exec(),filter(),float(),help(),hex(),id(),input(),int(),isinstance(),len(),list(),locals(),map(),max(),min(),sum(),oct(),open(),ord(),pow(),print(),range(),round(),set(),str(),tuple(),type(),zip()
  64.  
  65. 二、装饰器
    1、概要
    装饰器最常用在登录验证。
    开放封闭原则:在类内部、函数内部对于调用方来说是封闭的,如果统一更改函数不要直接在函数内部改,只能在外部改。即内部封闭、外部开放。
    装饰器主要解决,在遵循开放封闭原则的前提下,为函数添加功能。
    例:
    def outer(func)
    def inner()
    print("log")
    func()
    print("after")
    return inner
  66.  
  67. @outer
    def f1():
    print("F1")
    注:装饰器原理,即自动执行outer函数并且将@outer下方出现的函数的函数名作为参数传入;即将outer函数的返回值重新赋值给f1
    换个说法就是,一旦一个函数被装饰器装饰,那么这个函数的函数名就会被重新赋值,赋值成装饰器函数的内存函数。
    此时,上例中,fi函数已经被重新赋值成inner函数,而原f1函数被赋值成为了func函数。
  68.  
  69. 2、学习装饰器必备知识:
    1
    def f1():
    print("123")
  70.  
  71. def f1():
    print("456")
  72.  
  73. f1()
    注:在执行函数f1时,是输出456,因为python自上而下解释,在执行到第二个函数时,会将f1的内存指针更行指向第二个函数,因此最终执行的时候最后一定定义的f1函数
  74.  
  75. 2
    def f1():
    print("123")
  76.  
  77. def f2(xxx):
    xxx()
  78.  
  79. f2(f1)
    注:在执行时,是输出“123”,原因是函数可以作为参数传递,在执行时,将函数f1作为参数传递进f2f2内部即执行了f1函数。
  80.  
  81. 3
    def f1():
    print("123")
  82.  
  83. 注:当一个函数只是被定义,而没有被调用的时候,解释器解释到他的时候是不执行的。
  84.  
  85. 3、装饰器的返回值
    例:
    def outer(func):
    def inner():
    print("log")
    r = func()
    print("after")
    return r
    return inner
  86.  
  87. @outer
    def f1():
    print("F1")
    return "FFFF"
    注:如果原函数有返回值,那么仅仅为原函数加上装饰器后,装饰器函数不会返回原函数的返回值,仅返回默认值None,需要在装饰器函数内,定义一个变量来接收原函数的返回值,并在装饰器函数中将这个变量返回,才算是一个比较完整的装饰器。
  88.  
  89. 4、装饰器的参数
    1
    def outer(func):
    def inner(a):
    print("log")
    r = func(a)
    print("after")
    return r
    return inner
  90.  
  91. @outer
    def f1(a):
    print("F1")
    return "FFFF"
  92.  
  93. r = f1("fafafa")
    print r
    注:如果原函数有参数,而装饰器函数没有参数的时候,在执行的时候给函数传入了参数,则会报错,因此如果被装饰的原函数有参数,那么装饰器函数有也需要有参数。
    问题:装饰器作为对多个函数的统一操作,会涉及多个函数,每个函数所需要的参数各不相同,如果用上述方法,将极大的减低装饰器的通用性。
  94.  
  95. 2
    def outer(func):
    def inner(*args,**kwargs):
    print("log")
    r = func(*args,**kwargs)
    print("after")
    return r
    return inner
  96.  
  97. @outer
    def f1(a):
    print("F1")
    return "FFFF"
  98.  
  99. def f2(a1,a2):
    print("F2")
  100.  
  101. r1 = f1("fafafa")
    print r1
    r2 = f2(111,222)
    注:为了解决例1中的问题,可以在装饰器函数中使用“万能参数”,并且在装饰器函数执行原函数时也使用“万能参数”,python在内部会将装饰器函数收到的参数直接传递给原函数执行,到此未知,就是一个成型的普通装饰器。
  102.  
  103. 作业:
    用户管理程序:
    普通用户:登录,注册,修改密码,查看本用户信息
    管理员用户:登录,注册,修改密码,查看本用户信息,添加删除普通用户,修改普通用户密码,查看所有普通用户,按照指定关键字搜索用户信息,提高普通用户权限。
    用户信息存放进文件
    使用装饰器

python3学习笔记(3)的更多相关文章

  1. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  2. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  3. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  4. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  5. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  6. Python3学习笔记01-环境安装和运行环境

    最近在学习Python3,想写一些自己的学习笔记.方便自己以后看,主要学习的资料来自菜鸟教程的Python3教程和廖雪峰官方网站的Python教程. 1.下载 1)打开https://www.pyth ...

  7. python3学习笔记(9)_closure

    #python 学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #从高阶函数的定义,我们可以知道,把函数作为参数的函数, ...

  8. python3学习笔记(8)_sorted

    # python学习笔记 2017/07/13 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #python 内置sorted()函数 可以对list进 ...

  9. python3学习笔记(4)_function-参数

    #python学习笔记 17/07/10 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- import math #函数 函数的 定义 #定义一个求绝对值 ...

  10. python3学习笔记(1)_string

    #python学习笔记 17/07/07 # !/usr/bin/evn python3 # -*- coding:utf-8 -*- #r"" 引号当中的字符串不转义 #练习 # ...

随机推荐

  1. Activiti 用户任务关联自定义表单

    问题阐述 通常每一个"用户任务"都会对应一个表单,以供用户录入信息.尤其是在"流程定义"拥有多个版本的情形下,明确的指定表单显得极其重要. 一份新版本的&quo ...

  2. 【转载】小tips: PC端传统网页试试使用Zepto.js进行开发

    Zepto.js设计之初专为移动端,不对一些古董浏览器支持.所以,尺寸很小,压缩后20K多一点,但是,jQuery压缩后,3.*版本要80多K,1.*版本则要90多K,4倍差距. 由于每个页面都会使用 ...

  3. ABAP 数值四舍五入函数

    VALUE '12.5445' , dat1 . VALUE '12.540'. * 方法一 CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS' EXPORTING val ...

  4. 如何从MVP模式进阶到Clean模式

    从类图上来看,MVP都是一个业务一个Presenter,每个Presenter都是一个接口,它还包含了View的接口,用于定于和View相关的行为,然后Activity等业务类实现View的接口,因为 ...

  5. 从零开始搭建框架SSM+Redis+Mysql(一)之摘要

    从零开始搭建框架SSM+Redis+Mysql(一)之摘要 本文章为本人实际的操作后的回忆笔记,如果有步骤错漏,希望来信307793969@qq.com或者评论指出. 本文章只体现过程,仅体现操作流程 ...

  6. 简易js模板引擎

    前面 js 模板引擎有很多很多,我以前经常用 art-template ,有时候也会拿 vue 来当模板引擎用. 直到...... 年初的时候,我还在上个项目组,那时候代码规范是未经允许不能使用 [外 ...

  7. Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用]

    Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用] tip:只需要配置xml文件即可 1.第三方依赖包的引入 <properties> <project.bu ...

  8. Java Scanner类

    package io; import java.util.*; public class useScanner { public static void main(String[] args) { S ...

  9. ALV添加文字输入框

    一.业务场景 在合同打印中,需要临时添加其他约定事项,在打印程序的ALV中添加其他事项字段,点击之后弹出文字输入窗口,点击确定,文字内容存表,并在ALV中展示,点击打印后,文字内容加载到smartfo ...

  10. cas单点登录如何获取更多信息

    现在有个新的系统(SpringMVC+Spring+Mybatis),我为它添加了一个单点登录功能.只是在本地客户端的web.xml文件里,添加了以下配置 <!-- 用于单点退出,该过滤器用于实 ...