day6 内置函数/验证码/文件操作


# 上期回顾
#
# 三元运算
#
# name = "name1" if 条件 esle "name2"
#
# 深浅拷贝
# 1、数字、字符串
# 深浅,都一样
# 2、其他
# 前拷贝:只拷贝第一层
# 深拷贝:不拷贝最后一层
#
# set集合
# 无序、不重复
# 交集、并集、差集
#
# 函数
# 1、def
# 2、函数名、参数
# 3、函数功能
# 4、执行函数
# 5、参数
# 普通参数
# 指定参数
# 默认参数,写在最后 def f(a1,a2, a3, a4 = '123')
# 动态
# *args => 元祖 *
# **kwargs => 字典 **
#
# def f1(123):
# 功能
#
# 全局变量
# global



# lambda 表达式

def f1(a):
return 123


# if else
# 三元运算

# def xxx
# lambda

f2 = lambda: 123


# f1与f2实现功能一样

def f3(a1, a2):
return a1 + a2


f4 = lambda b1, b2: b1 + b2

a = f3(3, 4)
print(a)
b = f4(3, 4)
print(b)

# f3与f4实现功能一样


################################
#####python 内置函数#############
################################

# abs() 取绝对值

i = abs(-123)
print(i)

# all() 循环参数,如果每个元素都是真值,则返回值为真

r = all([True, True, False])
print(r)

# 每个元素都为真True
# 假: 0,None,空字符串,空列表,空元祖,空字典
# print(bool(0))
# print(bool(-1))
# print(bool(None))
# print(bool("1234"))
# print(bool([]))

a1 = all(["123", " ", [11, ], ""])
print(a1)

# any() 循环参数,只要有一个为真,则返回值为真

i = any(["123", " ", [11, ], ""])
print(i)


# ascii() 对象的类中找 __repr__, 获取返回值
class Foo:
def __repr__(self):
return "hello"


obj = Foo()

r = ascii(obj)
print(r)
# ascii(对象)



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

r = bin(11)
print(r)
r = hex(11)
print(r)
r = oct(11)
print(r)
r = int(0b1011)
print(r)

i = int('0xe', base=16)
print(i)

########bool,判断真假,把一个对象转换成bool值,None,""[],{}转换成false


########bytes 字节

########bytearray 字节列表,

#######字节、字符串

# bytes("xxxx", encoding='utf8')


########chrd() 接受一个数字,找到代指的ascii字符
########ord() 给一个字符,找到代指该字符的ascii数值


# 一个字节,8位,2**8, 256, A B C....

i = chr(69)
print(i)

t = ord('B')
print(t)

############生成随机验证码###########

# 生成一个随机数
# 数字转换成字母:chr(数字)

import random

i = random.randrange(65, 91)
print(i)

c = chr(i)
print(c)

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

print(temp)


########callable()表示一个对象是否可以被执行######

def f1():
return 123


f2 = 123
r = callable(f1)
print(r)

r2 = callable(f2)
print(r2)

#############classmethod以后讲


#############compile() 将字符串接收,编译函数

#############complex() 复数用不着


#############delattr() 反射 (设计模式,工厂模式)
#############hasattr()
#############getattr()
#############setattr()

#############dict() 字典

#############dir() 列出基本类型所有内置功能

li = []
# c1 = dir(li)
print(c1)

#############help() 列出基本类型内置功能,并简单解释



#############divmod()

a = 10 / 3
print(a)
r = divmod(10, 3)
print(r)

############enumerte()



############eval() 执行一个字符串形式的表达式,有返回值
############exec() 将字符串作为代码执行,没有返回值,只用来执行python代码

a = 1 + 3
print(a)

a = "1 + 3"
print(a)

ret = eval("1 + 3")
print(ret)

ret2 = eval("a + 70", {"a": 99}) # 可以计算带参数的表达式,需要加一个字典用于赋值
print(ret2)


# exec("for i in range(10): print(i)")


#########filter()过滤,符合条件的获取,不符合的筛除##########

####syntax:filter(函数,可以迭代的对象)

#####循环可迭代的对象,获取每一个参数,函数(参数)

def f1(x):
if x > 22:
return True

ret = filter(f1, [11,22,34,55])
for i in ret:
print(i)

#####eg2
def f1(x):
if x > 22:
return True


ret = filter(lambda x: x > 22, [11,22,33,44])

for i in ret:
print(i)



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

[1,2,3,4,5]

def f2(x):
return x + 100
ret = map(f2,[1,2,3,4,5])

print(ret)
for i in ret:
print(i)


ret2 = map(lambda x: x + 100, [1,2,3,4,5])
print(ret2)
for i in ret2:
print(i)


########float不说################
########format不说将来说########


########forzenset()冻结的set,不说了########


########globals()表示获取当前代码里所有的全局变量########

########locals()获取所有的局部变量########


def f1():
name = 123
print(locals())
# print(globals())

f1()




########hash()算一个东西的hash值,用于字典的key的保存,对key做一个优化########

dic = {
"asldfjwqlekfjlkvjasd;jvqw;eklfjla;sdfj" : 1,
}

i = hash('asldfjwqlekfjlkvjasd;jvqw;eklfjla;sdfj')
print(i)



########help()########

########hex()########

########id()########

########list()########

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

li = [11, 22]
r = isinstance(li, list)
print(r)

########range() 不创建,只有当循环的时候才创建########

nums = range(10)

for i in nums:
print(i)


########iter()迭代器 后面说,next()后面说

obj = iter([11,22, 33,44])


########max()最大值, min()最小值########

li = [11, 122, 213, 112, 3322]
r = max(li)
print(r)

zx = min(li)
print(zx)


########object()后面说 ###############

########open()文件操作########


########pow() 求指数的########

i = pow(3, 10)
print(i)


########property()后面说,属性########

########repr() ascii() 返回########

########reversed() 反转

########round()四舍五入########
r = round(3.3)
r1 = round(3.6)
print(r,r1)

########slice()切片########

########sorted()########

########staticmethod()########



########sum() 求和########

r = sum([11,22,33,44])
print(r)

########vars()当前对象里有多少个变量########

########zip(), 将多个组组成一个新的组,每个元素有每个对象的元素构成########

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



########__import__() 导入用的,可以给导入的模块取个别名########

# import getpass
# import ramdom


########sorted排序, 数字按大小,字符串按字符按位从小到大比较,先数字,再符号,再后字母,然后中文########

li = [11, 211, 22, 3, 4]
new_li = sorted(li)
print(new_li)

char = ['赵', '1', '223d', '2234', '22345','sdfas', "_",'123']
new_char = sorted(char)
print(new_char)

########open()文件操作########
# 一、打开文件
# 二、操作文件
# 三、关闭文件

#open(文件名,模式,编码)

# f = open('ha.log', 'r')
# date = f.read()
# f.close()
# print(date)
#
# print(type(date))
# b = bytes(date, encoding='utf8')
########基本打开方式,r w x a########

# r 只读模式
f = open("ha.log", "r")
#f.write("asdfwefsdf") #只读无法写
f.close()


# w 只写模式, 不可读,不存在则创建,存在则清空内容

f = open('ha1.log', 'w')
f.write("1d1d12d")
f.close()

# 清空

f = open('ha1.log', 'w')
f.close()

# x 只写,不可读,不存在则创建,存在则报错

# f = open('ha2.log','x')
# f.write('454')
# f.close()


# a, 追加模式,不可读,不存在则创建,存在则只追加内容

# f = open("ha2.log", 'a')
# f.write("555")
# f.close()




########

# 1. 只读,rb, 以字节方式打开,不需要加encoding

f = open("ha.log", 'rb')#, encoding='utf-8')
data = f.read()
f.close()
print(type(data))

# 2. 只写,wb,以二进制方式取写
f = open('ha.log', 'wb')
str_data = "中国人"
bytes_data = bytes(str_data, encoding ='utf8')
f.write(bytes(bytes_data))
f.close()

# 3. 只写 xb
# 4。追加 ab

########普通打开方式
########python内部将01001010 转换成字符串,通过字符串操作
######## 01010010100111 python解释器 程序员


########二进制打开方式(字节bytes)


########既想读又想写用+

########r+, 可读写
########读写只指到末尾
########写的时候指针指到最后

f = open('ha.log', 'r+', encoding='utf-8')
print(f.tell())
data = f.read(2)
print(f.tell())
print(type(data),data)

print(f.tell())
f.write('泰国人')
print(f.tell())
data = f.read(1)
print(f.tell())
print(data)
f.close()

########w+,写读, 先清空,在写之后就可以读了
########先清空,之后写的才能读,写,指针到最后


f = open("ha3.log", "w+", encoding='utf8')
f.write("何莉莉")
f.seek(0)
data3 = f.read()
f.close()
print(data3)


########x+,写读,和w+,如果存在这个文件则报错
########写时,追加,放在最后
# f = open("ha3.log", "x+", encoding='utf8')
# f.write("何莉莉")
# f.seek(0)
# data3 = f.read()
# f.close()
# print(data3)


########a+,写读,打开的同时,已经将指针移到最后

f = open("ha4.log", 'a+', encoding="utf8")
data = f.read()
f.seek(0)
print(data)
f.close()
print(data)


#f.tell() 获取指针的位置
#f.seek() 调整指针的位置


########共有的特性,seek,读取


########r+b
########w+b
########x+b
########a+b
########bytes


########文件操作########


########flush()将内存里的内容刷到硬盘########
f1 = open("ha.log", "r+")
f1.write("所宁紧缩的眉头")
f1.flush()

########read()

f1.read()
#读取所有的内容
#read(1) 字符
#read(1) 字节


########readline()仅读取一行数据########

########truncate()截取########

f1 = open("ha.log", "r+", encoding='utf8')
print(f1.tell())
print(f1.seek(6))

f1.truncate()
f1.close()

########文件常用基本操作########
########close()关闭文件########
########fileno() io操作,检测文本/socket有没有变化(不重要)########
########flush()刷新文件,刷到硬盘########
########isatty()(不重要)########
########read()读取,可以加参数########
########readline()读取一行(从第一行开始),指针到该行末尾########
########seek()########
########tell()########
########trunkcate()截取########
########write() 写########

# f1 = open("ha.log", "r+",encoding = "utf-8")
# f1.write("所宁静锁的眉头")


f = open("ha.log", 'r', encoding='utf8')
f.read()


########python2.7 同时打开两个文件########
with open('ha1.log', 'r') as obj1, open('ha3.log', 'r') as obj2:
pass


# with open('源文件', 'r') as obj1,open("新文件", "w") as obj2:
# pass
posted @ 2017-05-16 09:12  felixpeking  阅读(106)  评论(0编辑  收藏  举报