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

r = ord("B")
print(r) 实例:随机验证码
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) print ("".join(li)) #使用join进行列表中元素拼接 3、compile()
把一个字符串编译成python代码
例:
s = "print(123)"
r = compile(s,"<string>","exec")
print(r) 解释器执行时的步骤:
第一步:读取文件内容到内存(类型str,类似open打开)
第二部:将字符串编译成特殊的代码
第三部:执行代码 4、eval()
将接收到的一个字符串当作一个表达式,计算并拿出结果
例:
s = "8*8"
ret = eval(s)
print (ret) 5、exec()
用来执行由compile编译而来的代码;如果接受到的是一个字符串,那么就在内部将字符串编译成代码,然后执行。
例:
s = "print(123)"
r = compile(s,"<string>","exec")
exec(r) 6、delattr()
反射,delattr,getattr,setattr,hatattr 7、dir()
快速查看一个对象提供了哪些功能
例:
dir(list) 8、help()
查看一个对象提供的功能的详细解释
例:
help(list) 9、divmod()
计算两个数相除,返回商和余数的元组
例:
共97条数据,每页显示10条,需要多少页?
r = divmode(97,10)
print(r) 10、isinstance()
判断一个对象是否是某个类的实例
例:
s = "alex"
r = isinstance(s,srt)
print(r) 11、filter()
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)) 例2:
li = [11,22,33,44,55]
result = filter(lambda a:a>33,li) #lambda表达式自动return
print(list(result)) 12、map()
map(函数,可迭代的对象)
自动循环,对可迭代对象的每一个元素用传入的函数进行处理,将函数的返回值添加到结果中。
例1:
def f1(a):
return a+100 li = [11,22,33,44,55]
result = map(f1,li)
print(list(result)) 例2:
li = [11,22,33,44,55]
result = map(f1 = lambda a:a+100,li)
print(list(result)) 13、globals()、locals()
globals代表所有的全局变量
locals代表所有的局部变量
例:
NAME = "ALEX"
def show():
a = 123
c = 123
print(globals())
print(locals())
show() 14、hash()
根据传入参数生成hash值,一般用户字典的key来保存,其他所有语言一般都适用 15、max()、min()、sum()
max用来取列表中的最大值
min用来取列表中的最小值
sum用来求列表中所有元素的和 16、object()
是所有类的父类 17、pow()
用来求平方
例:
2**10 等同于 r = pow(2,10) 18、reversed()
进行反转,例如对列表中的元素进行反转 19、round()
对数字进行四舍五入 20、slice()
对字符串进行切片 21、sorted()
对列表进行排序 22、zip()
将多个列表进行混合,相同位置的所个元素组成一个元组作为一个元素,如果相同位置只有一个元素则不组合。
例:
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) 整理:
必须会的内置函数:
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() 二、装饰器
1、概要
装饰器最常用在登录验证。
开放封闭原则:在类内部、函数内部对于调用方来说是封闭的,如果统一更改函数不要直接在函数内部改,只能在外部改。即内部封闭、外部开放。
装饰器主要解决,在遵循开放封闭原则的前提下,为函数添加功能。
例:
def outer(func)
def inner()
print("log")
func()
print("after")
return inner @outer
def f1():
print("F1")
注:装饰器原理,即自动执行outer函数并且将@outer下方出现的函数的函数名作为参数传入;即将outer函数的返回值重新赋值给f1。
换个说法就是,一旦一个函数被装饰器装饰,那么这个函数的函数名就会被重新赋值,赋值成装饰器函数的内存函数。
此时,上例中,fi函数已经被重新赋值成inner函数,而原f1函数被赋值成为了func函数。 2、学习装饰器必备知识:
例1:
def f1():
print("123") def f1():
print("456") f1()
注:在执行函数f1时,是输出456,因为python自上而下解释,在执行到第二个函数时,会将f1的内存指针更行指向第二个函数,因此最终执行的时候最后一定定义的f1函数 例2:
def f1():
print("123") def f2(xxx):
xxx() f2(f1)
注:在执行时,是输出“123”,原因是函数可以作为参数传递,在执行时,将函数f1作为参数传递进f2,f2内部即执行了f1函数。 例3:
def f1():
print("123") 注:当一个函数只是被定义,而没有被调用的时候,解释器解释到他的时候是不执行的。 3、装饰器的返回值
例:
def outer(func):
def inner():
print("log")
r = func()
print("after")
return r
return inner @outer
def f1():
print("F1")
return "FFFF"
注:如果原函数有返回值,那么仅仅为原函数加上装饰器后,装饰器函数不会返回原函数的返回值,仅返回默认值None,需要在装饰器函数内,定义一个变量来接收原函数的返回值,并在装饰器函数中将这个变量返回,才算是一个比较完整的装饰器。 4、装饰器的参数
例1:
def outer(func):
def inner(a):
print("log")
r = func(a)
print("after")
return r
return inner @outer
def f1(a):
print("F1")
return "FFFF" r = f1("fafafa")
print r
注:如果原函数有参数,而装饰器函数没有参数的时候,在执行的时候给函数传入了参数,则会报错,因此如果被装饰的原函数有参数,那么装饰器函数有也需要有参数。
问题:装饰器作为对多个函数的统一操作,会涉及多个函数,每个函数所需要的参数各不相同,如果用上述方法,将极大的减低装饰器的通用性。 例2:
def outer(func):
def inner(*args,**kwargs):
print("log")
r = func(*args,**kwargs)
print("after")
return r
return inner @outer
def f1(a):
print("F1")
return "FFFF" def f2(a1,a2):
print("F2") r1 = f1("fafafa")
print r1
r2 = f2(111,222)
注:为了解决例1中的问题,可以在装饰器函数中使用“万能参数”,并且在装饰器函数执行原函数时也使用“万能参数”,python在内部会将装饰器函数收到的参数直接传递给原函数执行,到此未知,就是一个成型的普通装饰器。 作业:
用户管理程序:
普通用户:登录,注册,修改密码,查看本用户信息
管理员用户:登录,注册,修改密码,查看本用户信息,添加删除普通用户,修改普通用户密码,查看所有普通用户,按照指定关键字搜索用户信息,提高普通用户权限。
用户信息存放进文件
使用装饰器

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. 【转载】CSS3的calc()使用

    文章转载自 w3cplus http://www.w3cplus.com/ 原文链接:http://www.w3cplus.com/css3/how-to-use-css3-calc-function ...

  2. caffe源码 池化层 反向传播

    图示池化层(前向传播) 池化层其实和卷积层有点相似,有个类似卷积核的窗口按照固定的步长在移动,每个窗口做一定的操作,按照这个操作的类型可以分为两种池化层: 输入参数如下: 输入: 1 * 3 * 4 ...

  3. 数据挖掘 ID3

    本文讲的是数据挖掘中的ID3,这个有很多人做了,我也没有说什么改善,只是要考试,用我考试记录的来写,具有很大主观性,如果看到有觉得不对或感觉不好,请关掉浏览器或和我说,请不要生气或发不良的言论. 决策 ...

  4. 创建UWP通用应用程序

    一,下载VS2015,下载地址:https://www.visualstudio.com/zh-hans/downloads/ VS2015下载地址 二,选择UWP开发工具并安装 VS2015配置 三 ...

  5. Httpd2.2常见配置及功能

    Httpd 2.2常见配置 要配置http服务的配置文件,先备份一下,养成良好习惯,如果误操作导致http服务起不来,就可以将备份的主配置文件重新覆盖一下 httpd配置文件的组成:有三大部分组成,其 ...

  6. Struts2运行流程-源码剖析

    本文为原创,如需转载,请标明出处:http://www.cnblogs.com/gudu1/p/7726172.html 首先说一下查看这些框架源码的感受,每一次深入探究 Spring.Struts ...

  7. 【ASP.NET MVC 学习笔记】- 09 Area的使用

    本文参考:http://www.cnblogs.com/willick/p/3331519.html 1.ASP.NET MVC允许使用 Area(区域)来组织Web应用程序,这对于大的工程非常有用, ...

  8. canvas绘制太阳系

    原文地址:http://jeffzhong.space/2017/10/26/solar/ 学习canvas有一段时间了,顺便写个小项目练手,该项目用到的知识点包括: ES6面向对象 基本的三角函数 ...

  9. JAVA基础知识总结:十

    一.抽象类 1.定义 当多个类中出现相同功能,但是功能主体是不同的,这是可以进行向上抽取的,只抽取功能的定义部分,使用抽象类实现 抽象类的存在就是为了被继承 2.使用 abstract 3.抽象类的特 ...

  10. IP核之初——FIFO添加以太网MAC头部

    本文设计思路源自明德扬至简设计法.在之前的几篇博文中,由于设计比较简单,所有的功能都是用verilogHDL代码编写实现的.我们要学会站在巨人的肩膀上,这时候就该IP核登场了! 说白了,IP核就是别人 ...