python学习笔记-day4笔记 常用内置函数与装饰器
1.常用的python函数

abs 求绝对值
all 判断迭代器中所有的数据是否为真或者可迭代数据为空,返回真,否则返回假
any 判断迭代器中的数据是否有一个为真,有返回真,可迭代数据为空或者没有真,返回假
bin 转换整数为二进制字符串
hex 转换整数为十六进制字符串
oct 转换整数为八进制字符串
bool 转换数据为布尔值
bytearray 将数据转换为字节数据
bytes 将数据转换为字节数组 bytes是bytearray的不可变版本
chr 将数字按照asci码表转换对应的字符(面向过程中可用于验证码生成)
ord 将字母按照asci码表转换对应的数字
compile 编译字符串或者文件,返回编译后的代码
exec 执行python代码,不返回结果(可接受python代码,或者字符串)
eval 执行python表达式,返回结果
divmod 得到两个数字相除的结果和余数(可用于分页)
enumerae 得到一个枚举对象(给可迭代数据添加下标)
filter 过滤数据,当条件为真,返回一个迭代器(用于过滤操作)
def big(a):
if a>34:
return True
return False
li=[11,22,33,44,55,66]
print(list(filter(big,li)))
map 更改迭代器中的每个数据得到一个新的迭代器(可批量操作)
def big(a): return a+14
li=[11,22,33,44,55,66]
print(list(map(big,li)))
pow 幂运算
range 创建一个可迭代范围对象 r[i] = start + step * i
round 浮点数按小数位数做舍入操作
zip
它是Python的内建函数,(与序列有关的内建函数有:sorted()、reversed()、enumerate()、zip()),其中sorted()和zip()返回一个序列(列表)对象,reversed()、enumerate()返回一个迭代器(类似序列)
定义:zip([seql, ...])接受一系列可迭代对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同
li=['python','java','php','ruby',]
num=[23,17,33,67,85]
for l,n in zip(li,num):
print(l,n)
zip()配合*号操作符,可以将已经zip过的列表对象解压
(注意解压只适合python2,python3解压为空)
1.2利用chr,ord生成字母和数字混合的验证码
1.2.1.随机生成6位大写字母验证码
import random
li=[]
for i in range(6):
temp=random.randrange(65,91)
c=chr(temp)
li.append(c)
re=''.join(li)
print(re)
1.2.2.随机生成6位大写字母混合数字验证码
import random
li=[]
for i in range(6):
n=random.randrange(0,6)
if n==2 or n==4:
rn=random.randrange(0,10)
li.append(str(rn))
else:
tmp=random.randrange(65,91)
s=chr(tmp)
li.append(s)
l=''.join(li)
print(l)
1.2.3.随机生成6位大小写字母混合数字验证码
import random
li=[]
for i in range(6):
n=random.randrange(0,6)
if n==2 or n==4:
rn=random.randrange(0,10)
li.append(str(rn))
elif n==3:
a=random.randrange(97,122)
b=chr(a)
li.append(str(b))
else:
tmp=random.randrange(65,91)
s=chr(tmp)
li.append(s)
l=''.join(li)
print(l)
注意:lambda 匿名函数,自动返回结果

课堂小知识:
len 在python 3中默认按字符计算长度
len 在python 2默认按照字节计算长度
str='中国'
print(len(str))#默认字符计算长度
str2='中国'
b=bytes(str2,encoding='utf-8')#转换字节计算
print(len(b))
2.python json模块
import json
json_string = '{"name": "python", "age":"man"}'#数据的元素必须使用双引号,否则报错
parsed_json = json.loads(json_string)
print(parsed_json)json.loads 方法可以将数据格式化成相应数据类型

python原始类型向json类型的转化过程,具体的转化对照如下:

从json到python的类型转化对照如下:

3.python装饰器(decorator)
了解装饰器,咱们先了解下闭包
3.1.闭包(closure)
闭包是Python所支持的一种特性,它让在非全局定义的函数可以引用其外围空间中的变量,这些外围空间中被引用的变量叫做这个函数的环境变量。环境变量和这个非全局函数一起构成了闭包。
def outer(x):
y = [1,2,3]
def inner():
print x
print y
return inner
x = 5 #这个x没有被引用
f = outer(2)
f()
print f.__closure__ #函数属性__closure__存储了函数的环境变量
x和y都是属于函数outer命名空间的,在inner中被引用,当outer函数退出后,outer的命名空间不存在了,但是inner依然维护了其定义时候对其外部变量x,y的连接
3.2装饰器(decorator)
def outer(func):
def inner():
print('before')
func()
print('after')
return inner
@outer
def f1():
print('function f1')
f1()
装饰器是一个可调用对象(a callable),在Python中,函数是对象,当然也是可调用的,所以装饰器可以是一个函数,我们称其为函数装饰器。
这个可调用对象以一个函数作为参数,闭且返回另一个函数(来替换参数那个函数)
装饰器调用过程


def outer(func):
def inner():
print('before')
re=func()
print('after')
return re
return inner
@outer
def f1():
print('f1')
return 'no'
s=f1()
print(s)
装饰器的用途?
从这个刻意构造的很简单的例子,可以看出装饰器的意义,如果一个函数需要一个功能,如果这个功能可以被使用在很多函数上,或是函数并不是自己实现,那可以写个装饰器来实现这些功能。
上面的装饰器entrance,装饰一个函数后,函数被调用时会打印出这个函数的名字。
但是有一个问题,这个装饰器从功能上看,是要应该可以用来装饰任何函数,但是如果我们用它来装饰了一个带参数的函数
带参数的装饰器
def outer(func):
def inner(*args,**kwargs):
print('before')
re=func(*args,**kwargs)
print('after')
return re
return inner
@outer
def f1(a1):
print(a1)
return 'f1'
@outer
def f2(a2,a3):
print(a2,a3)
return 'f2'
s=f1('xxxxxxxxx')
print(s)
s2=f2('xwe',['12312','sfda'])
print(s2)


python学习笔记-day4笔记 常用内置函数与装饰器的更多相关文章
- Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器)
Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器) 1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数
- Python基础(二)——常用内置函数
1. 常用内置函数 (1)isinstance(object, classinfo) 用于判断一个对象是否为某一类型. object 是实例对象 classinfo 是基本类型如 int, floa ...
- python之迭代器 生成器 枚举 常用内置函数 递归
迭代器 迭代器对象:有__next__()方法的对象是迭代器对象,迭代器对象依赖__next__()方法进行依次取值 with open('text.txt','rb',) as f: res = f ...
- python第十八课——常用内置函数
常用内置函数:round(): print(round(3.14),round(3.99)) print(round(3145.926,-2),round(413.575,2)) abs(): pri ...
- python学习之路-4 内置函数和装饰器
本篇涉及内容 内置函数 装饰器 内置函数 callable() 判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callabl ...
- Python学习日记(六)——内置函数和文件操作(lambda)
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'prime' else: name = 'c ...
- Python学习【第5篇】:Python之函数(自定义函数,内置函数,装饰器,迭代器,生成器、模块)
一.为什么要使用函数? 1.避免代码重用 2.提高代码的可读性 二.函数的定义与调用 1. def 函数名(参数1,参数2): ''' 函数注释''' print('函数体') return 返回值 ...
- python之路 内置函数,装饰器
一.内置函数 #绝对值 abs() #所有值都为真才为真 all() #只要有一个值为真就为真 any() #10进制转成二进制 bin() #10进制转成八进制 oct() #10进制转成十六进制 ...
- Python之函数目录(自定义函数,内置函数,装饰器,迭代器,生成器)
1.初始函数 2.函数嵌套及作用域 3.装饰器 4.迭代器和生成器 6.内置函数 7.递归函数 8.匿名函数 9.函数相关定义 10.三元表达式.列表推导式.生成器表达式 11.函数与方法的区别
随机推荐
- For嵌套输出图形
/*输出此图形 * * * * * * * * * ** * * * * * * * * * * * * * *解析:可以把此图形看成两部分----*---* *--* ...
- 圆的反演变换(HDU4773)
题意:给出两个相离的圆O1,O2和圆外一点P,求构造这样的圆:同时与两个圆相外切,且经过点P,输出圆的圆心和半径 分析:画图很容易看出这样的圆要么存在一个,要么存在两个:此题直接解方程是不容易的,先看 ...
- hdu 2846 Repository
http://acm.hdu.edu.cn/showproblem.php?pid=2846 Repository Time Limit: 2000/1000 MS (Java/Others) ...
- oracle 密码忘记、密码遗失解决办法
忘了密码可以用操作系统验证方式登入SYS用,然后可以随意修改密码了.登入方法:1.进入命令提示符下,输入:sqlplus /nolog 回车进入SQL.2.在SQL环境下,输入:SQL> con ...
- javascript DOM对象
DOM简介 1.html DOM:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model) 2.DOM操作html JS能改变页面中的所有html元素 JS能改变页 ...
- linux for java programer
http://www.kancloud.cn/digest/javaxviii/126781 .查找文件 find / -name filename.txt根据名称查找/目录下的filename.tx ...
- 夺命雷公狗---node.js---13之Buffer的转换
其实Buffer也是一种数据结构的东西,但实际中用得并不多,我们只需要知道常用的转换方法即可: /** * Created by leigood on 2016/8/30. */ var str = ...
- [OrangePi] Backup internal EMMC to SD Card
Boot your Orange PI board from EMMC without SD Card inserted login insert your SD Card Run: sudo ins ...
- SSIS 关于并发的两个设置
1.MaxConcurrentExecutables(包级别的并发度控制) MaxConcurrentExecutables, a package level property in SSIS det ...
- 关于MyEcplise中常见的问题和解决方案
1.问题:严重 The web application created a ThreadLocal with key of type and a value of type but fail ...