博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习笔记-day4笔记 常用内置函数与装饰器
阅读量:5200 次
发布时间:2019-06-13

本文共 3568 字,大约阅读时间需要 11 分钟。

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)

转载于:https://www.cnblogs.com/zhanmeiliang/p/5547923.html

你可能感兴趣的文章
ASP.NET MVC5 高级编程-学习日记-第二章 控制器
查看>>
在HTML中使用JavaScript(浏览器对js的加载机制分析)
查看>>
获取字符串中出现最多的字符 (HashMap()储存)
查看>>
如何选择适合自己的云管理平台(一)
查看>>
Hibernate中inverse="true"的理解
查看>>
不同版本(2.3,2.4,2.5,3.0)的Servlet web.xml 头信息
查看>>
Java的String中的subString()方法
查看>>
selenium +chrome headless Adhoc模式渲染网页
查看>>
高级滤波
查看>>
使用arcpy添加grb2数据到镶嵌数据集中
查看>>
[转载] MySQL的四种事务隔离级别
查看>>
QT文件读写
查看>>
数组去重的方法
查看>>
PHP开发中常见的安全问题详解和解决方法
查看>>
test
查看>>
19号预习
查看>>
C语言小项目-火车票订票系统
查看>>
缓和曲线06七次四项式
查看>>
IDEA快捷键
查看>>
001Spring4.2基本环境搭建
查看>>