lambda表达式、Python 内置函数、进制转换、随机验证码

 

简单的函数可以用lambda表达式

def f1():
    return  123
f2 = lambda : 123
 
 
def f3(a1,a2):
    return a1 +a2

f4 = lambda al,a2 : al+a2
    

py3的内置函数:

 

  

#bool , 判断真假,把一个对象转换成布尔值,
#bytes  字节
#bytearrary  字节列表{字节}
 # bytes ('sssfs',encoding='utf-8')

i=chr(66)  #ascii码
j=ord('a')  #ascii码
print(i)
print(j)

 

#abs绝对值
i = abs(-123)
print(i)

#all,循环参数,如果每个元素都是真,那么all的返回值为真
r = all([True,True])
print(r)
#每个元素都为True
r = all([True,True,False])
print(r)
#假 0 None '' [] () {} 空值
print(bool({}))

#any只要有个真的 ,则为真。
i = any ([None,1])
print(i)

#ascii ascil(对象) ,对象的类中找__repr__ ,获取其返回值。
class Foo:
def __repr__(self):
return 'Holle'

bin() #二进制
hex() # 十六进制
oct() #八进制
int() # 十进制

随机验证码实验
#生成一个随机数 65-90
#一个数字转换成字母,chr(数字)

import random
temp = ''
for i in range(6):
    num = random.randrange(0,4)
    if num == 3 or num == 1:
        rad2 = random.randrange(0,10)
        temp = temp + str(rad2)
    else:
        rad1 = random.randrange(65, 91)
        c1 = chr(rad1)
        temp = temp + c1

print(temp)

 dir(): 打印详细功能    help(list)

li = []
print(dir(li))
divmod
a = 10/3
print(a)
#相当于取余
r =  divmod(10,3)
print(r)
#eval直接计算出字符串'1+3' 的和,eval 可以执行一个字符形式的表达式。

ret = eval('1+3')

print(ret)

#eval可以在括号里后面加字典。意思是a=99.
ret = eval('a+3',{'a':99})
print(ret)
#exec 可以执行for,它没有返回值,会直接输出结果。
exec("for i in range(10):print(i)")

 

filter(函数,可迭代的对象)

#循环可迭代的对象,获取每一个参数,函数(参数)
def f1(x):
if x > 22:
return True
else:
return False
ret = filter(f1,[11,22,33,44])
for i in ret:
print(i)
#循环可迭代的对象,获取每一个参数,函数(参数)
def f1(x):
    if x > 22:
        return  True
    else:
        return False
ret = filter(f1,[11,22,33,44])
for i in ret:
    print(i)


#循环可迭代的对象,获取每一个参数,函数(参数)
def f1(x):
    if x > 22:
        return  True
    else:
        return False
ret = filter(lambda x: x>22 ,[11,22,33,44])
for i in ret:
    print(i)

map(函数,可迭代的对象)

ef f1(x):
    return x +100
ret = map(f1, [1,2,3,4,5])
for i in ret:
    print(i)


#map(函数,可迭代的对象)
def f1(x):
    return x +100
ret = map(lambda x : x+100, [1,2,3,4,5])
for i in ret:
    print(i)

#map(函数,可迭代的对象)
def f1(x):
if x % 2 == 1:
return x +100
else:
return x
ret = map(lambda x : x+100 if x % 2 == 1 else x, [1,2,3,4,5])
for i in ret:
print(i)

globals()获取全局变量   locals()获取全部局部变量

hash ()哈希  储存节省内存,给hash一个值,它会转换成一个值。

li = [11,22]

isinstance(li,list) # 判断某个对象是否是某个类创建的。

iter() #迭代器

 max()取最大值

pow 求幂  pow(2,100)----->2的100次方

i = pow(2,100)
print(i)
round 四舍五入
i=round(3.3)
print(i)

sum 求和

zip
li =[11,22,33,44]
li2 = ['a','BB','C','E']
r = zip(li,li2)
for i in r:
    print(i)

 sorted()

li = [1,211,22,3,4]
print(li)
#给列表排序,列表里不能同时存在字符串和数字,否则自会报错
li.sort()
print(li)
#给列表排序,没有直接更改原来的列表,需要变量接收。列表里不能同时存在字符串和数字,否则会报错、
ret = sorted(li)
print(ret)

open 文件操作 ------>基本的打开方式

a ,追加模式不可读,上图有错误。

f = open('ha.log', 'r')#’r‘表示只读模式,默认是只读模式。
data = f.read()
f.close()
print(data)


f = open('ha1.log', 'w')#w,只写模式,[不可读;文件不存在则创建;存在则清空内容;]
data = f.write('123')
f.close()
print(data)



f = open('ha1.log', 'x')#x,只写模式,[不可读;文件不存在则创建;存在则报错;]
data = f.write('123')
f.close()
print(data)


f = open('ha1.log', 'a')#a,追加模式,[不可读;文件不存在则创建;存在则追加内容;]
data = f.write('123')
f.close()
print(data)

open  以字节的方式打开

#1、只读,rb

f = open('ha1.log', 'rb')
data = f.read()
f.close()
print(data)
#2、只写 ,wb  需要把需要写入的字符串,转换成字节。
f = open('ha1.log', 'wb')
f.write(bytes('中国', encoding='utf-8'))
f.close()

普通打开模式:Python默认有转换器把二进制转换成字符。

以字节方式打开:写入的时候,需要自己手动把字符串转换成字节

# r+,w+,x+,a+
#r+ ,读写【可读  可写】
f = open('ha.log', 'r+', encoding='utf-8')
#指针为0,起始位置
print(f.tell())

data = f.read(1)
print(type(data),data)

# f.seek(3) #调整指针
print(f.tell())

f.write('SB')

print(f.tell())

f.close()
#w+,先清空,在写的之后,就可以读了。先清空,之后写的才能读,写,指针到最后。
f = open('ha.log', 'w+', encoding='utf-8')
f.write('何莉莉')
f.seek(0)
data = f.read()
f.close()
print(data)
#x+,如果文件存在,会报错。先清空,之后写的才能读,写,指针到最后。
f = open('ha.log', 'x+', encoding='utf-8')
f.write('何莉莉')
f.seek(0)
data = f.read()
f.close()
print(data)
#a+  打开的同时指针已近到最后。
#a+ 写时,追加,放到最后。
f = open('ha.log', 'a+', encoding='utf-8')
data = f.read()
print(data)
f.seek(0) #调整指针位置
data = f.read()
print(data)
f.close()
f.tell() # 查看指针位置

f1.flush()  #把内存的内容写进硬盘。

close

flush #把内存的内容写进硬盘

read

readline 读取一行

seek

truncate 截取一行

write

with open('ha.log','r') as f: #不用手写关闭文件(f.close()),自动关闭
f.read()
with 在Python2.7之后支持同时打开两个文件
with  open('log1','r') as obj1, open( 'log2', 'r' )  as obj2:

 with  open('log1','r') as obj1, open( 'log2', 'w' )  as obj2: #把log1 写入log2
     for line  in obj1:
         obj2.write(line)

 





posted @ 2019-06-07 21:24  Freechen0  阅读(157)  评论(0)    收藏  举报