内置方法

1.round:四舍五入

正常遵守四舍五入,但在n.5结构中,n为偶数则舍去,n为奇数则进一.

res1 = round(4.51) # 5
res2 = round(4.5) # 4
res3 = round(3.5) # 4
res4 = round(4.12) # 4

2.abs:绝对值函数

res = abs(-100) # 100

3.sum:计算一个序列的和

lst = [-100,20,90,35]
res = sum(lst) # 45

4.max min:获取一个序列里面的最大(最小)值

lst = [-100,20,90,35]
# max 获取一个序列里边的最大值
res = max(lst)
print(res)
# min 获取一个序列里边的最小值
res = min(lst)
print(res)

扩展:max min与func形成高阶函数

lst = [("Alan",81),("Cat",82),("Hurt",71),("1dao",70)]

def func(n):
return n[-1] # 按照年龄返回
"""
70 => ("1dao",70)
71 => ("Hurt",71)
81 => ("Alan",81)
82 => ("Cat",82)
"""
res = max(lst,key=func)
res = min(lst,key=func)
print(res)
dic = {"Giao":-100,"Mojo":45,"Song":-70}
def func(n):
# print(n)
return abs(dic[n])
res = max(dic,key=func)
print(res) # 改写成lambda表达式
res = max(dic,key = lambda n : abs(dic[n]))
print(res)

5.pow:计算某个数值的x次方

"""pow(参数1,参数2[,参数3]) 参数3代表的是取余数"""
res = pow(2,3)
res = pow(2,3,3) # 2
res = pow(2,3,4) # 0

6.range:产生指定范围数据的可迭代对象

'''range(start,end,step)'''
for i in range(1,11,3):
print(i) # 1 4 7 10
for i in range(11,0,-3):
print(i) # 11 8 5 2 ...

7.bin oct hex:十进制转化成2/8/16进制

# bin    将10进制数据转化为二进制
res = bin(255)
print(res)
# oct 将10进制数据转化为八进制
res = oct(87)
print(res)
# hex 将10进制数据转化为16进制
res = hex(255)
print(res)

8.chr ord:ASCII码和字符之间的相互转换

# chr    将ASCII编码转换为字符
res = chr(97)
print(res) # "A"
# ord 将字符转换为ASCII编码
res = ord("A")
print(res) # 97

9. eval exec:将字符串当作python代码执行

# eval   将字符串当作python代码执行
strvar = "print('深圳的天气可真的太热了,受不了')"
# strvar = "a = 90" error 不能执行
eval(strvar)

# exec 将字符串当作python代码执行(功能更强大)
"""注意点:在与用户交互的时候,慎用"""
strvar = "a = 90"
exec(strvar)
print(a) # strvar放循环代码一样可以执行
strvar = """
for i in range(10):
print("你是大傻瓜")
"""
exec(strvar)

10.repr:不转义字符输出字符串

strvar = "E:\nython31_gx\day17"
print(repr(strvar))

11.input:接受输入字符串 (永远接受的是字符串)

name = input("你妈贵姓?")
print(name)

12.hash:生成哈希值

"""相同的两个数据经过哈希算法运算得出的结果一定相同"""
res1 = hash("abc")
res2 = hash("abc")
print(res1,res2) """
1.文件校验
2.密码加密
""" with open("ceshi1.txt",mode="r+",encoding="utf-8") as fp:
strvar1 = fp.read()
res1 = hash(strvar) with open("ceshi2.txt",mode="r+",encoding="utf-8") as fp:
strvar2 = fp.read()
res2 = hash(strvar)
print(res1 == res2)

math模块

# ### 数学模块
import math #ceil() 向上取整操作 (对比内置round)*
res = math.ceil(4.9) # 5
res = math.ceil(-3.5) # -3
print(res) # floor() 向下取整操作 (对比内置round)*
res = math.floor(3.9) # 3
res = math.floor(-3.8) # -4
print(res) # pow() 计算一个数值的N次方(结果为浮点数) (对比内置pow)
res = math.pow(2,3) # 8
# res = math.pow(2,3,3) error # 只有2个参数
print(res) # 结果一定是小数:8.0 # sqrt() 开平方运算(结果浮点数)*
res = math.sqrt(9)
print(res) # 结果一定是小数:3.0 # fabs() 计算一个数值的绝对值 (结果浮点数) (对比内置abs)
res = math.fabs(-99)
print(res) # 99.0 # modf() 将一个数值拆分为整数和小数两部分组成元组*
res = math.modf(13.45)
print(res) # (0.4499999999999993, 13.0) # copysign() 将参数第二个数值的正负号拷贝给第一个 (返回一个小数)*
res = math.copysign(-13,-1)
print(res) # 返回一个小数 # fsum() 将一个容器数据中的数据进行求和运算 (结果浮点数)(对比内置sum)
lst = [1,2,3,4,6]
res = math.fsum(lst)
print(res) # 返回一个小数 #圆周率常数 pi*
res = math.pi
print(res)

random模块

# ### random 随机模块
import random # random() 获取随机0-1之间的小数(左闭右开) 0<= x <1
res = random.random()
print(res) # randrange() 随机获取指定范围内的整数(包含开始值,不包含结束值,间隔值) **
# 一个参数
res = random.randrange(5) # 0~4
# 二个参数
res = random.randrange(2,8) # 2~7
# 三个参数
res = random.randrange(1,10,3) # 1,4,7
print(res) # randint() 随机产生指定范围内的随机整数 (了解)
res = random.randint(3,4) # 3,4
# res = random.randint(3) error
# res = random.randint(3,7,2) error # 3 5 7
print(res) # uniform() 获取指定范围内的随机小数(左闭右开)
res = random.uniform(1,3) # 1<=x<3 小数 # return a + (b-a) * self.random()
"""
a=3,b=1
3 + (1-3) * x = 0 => 3
3 + (1-3) * x = 1 => 1
1<x<=3
"""
res = random.uniform(3,1)
print(res) #choice() 随机获取序列中的值(多选一)
lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
res = random.choice(lst)
print(res) def mychoice(lst):
num = random.randrange(len(lst)) # 0 1 2 3 4
return lst[num]
res = mychoice(lst)
print(res) # lambda 表达式
func = lambda lst : lst[random.randrange(len(lst))]
print(func(lst)) #sample() 随机获取序列中的值(多选多) [返回列表]
lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
res = random.sample(lst,1)
res = random.sample(lst,2)
print(res) #shuffle() 随机打乱序列中的值(直接打乱原序列)
lst = ["刘鑫","刘子豪","孙致和","高旭峰","戈隆"]
random.shuffle(lst)
print(lst)

用random模块实现验证码的生成

def yanzhengma():
# 验证码当中含有小写字母,大写字母,数字
# 小写字母:97~122
strvar = ""
# 随机抽4次
for i in range(4):
s_char = chr(random.randrange(97,123))
# 大写字母:65~90
b_char = chr(random.randrange(65,91))
# # 0~9
num = str(random.randrange(10))
lst = [s_char,b_char,num]
strvar += random.choice(lst)
return strvar
res = yanzhengma()
print(res)

pickle模块

1.什么是序列化和反序列化?

不能够直接存储的数据变得可存储,这个过程叫做序列化
把文件中的数据拿出来,恢复成原来的数据类型,这个过程叫做反序列化

2.为什么要序列化?

在文件中存储的数据只能是字符串 或者是 字节流,不能是其他数据类型
如果想要存储,需要序列化.

3.Pickle的功能究竟有多强大?

pickle模块可以序列化一切数据类型

一个错误的示范

with open("ceshi0727.txt",mode="w",encoding="utf-8") as fp:
fp.write(lst)
# 只有字符串可以使用encode 和 decode 转换字节流
lst.encode() error

容器类型的序列化和反序列化

# 容器类型数据可以被序列化
#dumps 把任意对象序列化成一个bytes
res = pickle.dumps(lst)
print(res) #loads 把任意bytes反序列化成原来数据
lst = pickle.loads(res)
print(lst,type(lst))

函数的序列化和反序列化

def func():
print("我是最帅的!")
# 序列化
res = pickle.dumps(func)
print(res) # 反序列化
func = pickle.loads(res)
func()

迭代器的序列化和反序列化

# 迭代器可以序列化
# 序列化
it = iter(range(10))
res = pickle.dumps(it) # 反序列化
it = pickle.loads(res)
for i in it:
print(i)

dump和load(针对文件对象)

#dump  把对象序列化后写入到file-like Object(即文件对象)
lst = ["Fly","Djie","MiGod"]
with open("0728.txt",mode="wb") as fp:
# dump(数据,文件对象)
pickle.dump(lst,fp) #load 把file-like Object(即文件对象)中的内容拿出来,反序列化成原来数据
with open("0728.txt",mode="rb") as fp:
res = pickle.load(fp)
print(res,type(res))

用dumps和loads对文件进行操作

# dumps 和 loads 对文件操作 (区分)
lst = ["Alan","Dnan","LiangC"]
res = pickle.dumps(lst)
with open("0729.txt",mode="wb") as fp:
fp.write(res) with open("0729.txt",mode="rb") as fp:
res = fp.read()
print(res)
lst = pickle.loads(res)
print(lst , type(lst))

day17:内置方法&math模块&random模块&pickle模块的更多相关文章

  1. day16.内置方法与模块

    一.内置方法 1.abs 绝对值函数 res = abs(-100) print(res) 2.round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数,则进一!) ""& ...

  2. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...

  3. Python之路(第二十九篇) 面向对象进阶:内置方法补充、异常处理

    一.__new__方法 __init__()是初始化方法,__new__()方法是构造方法,创建一个新的对象 实例化对象的时候,调用__init__()初始化之前,先调用了__new__()方法 __ ...

  4. python 反射和内置方法

    一.isinstance和issubclass class Foo: pass class Son(Foo): pass s = Son() #判断一个对象是不是这个类的对象,传两个参数(对象,类) ...

  5. python 面向对象之反射及内置方法

    面向对象之反射及内置方法 一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静 ...

  6. Python之面向对象之反射、内置方法

    一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...

  7. python -- 类中--内置方法

    isinstance 和  issubclass isinstance(obj,b)  检查是否obj是否是类b的对象 class A(object):pass class B(A):pass b=B ...

  8. Python-全局函数(内置方法、内置函数)

    Python有很多内置方法,这些都全局可用 abs() 求数值的绝对值,如果是复数则返回其模 print(abs(-17), abs(30.2), abs(3+4j)) # Python中复数表示为 ...

  9. s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

    python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf ...

  10. 0513JS数组内置方法、数学函数、时间函数

    |数组中常用的内置方法|-push()与pop()|--push()是往数组的尾部添加,同时返回新数组的长度 var attr = [1,2,3,4,5];var attr2 = [6,7,8,9,0 ...

随机推荐

  1. Eclipse离线安装svn插件下载

    site-1.4.8.zip site-1.6.18.zip site-1.8.22.zip site-1.10.9.zip site-1.10.13-1.9.x.zip site-1.10.13-1 ...

  2. pom.xml配置资源过滤

    <build> <!--设置资源过滤--> <resources> <resource> <directory>src/main/java& ...

  3. [C#]协变Covariance案例

    协变参考代码1: using System; using System.Collections.Generic; using System.Linq; namespace CovarianceSoOn ...

  4. The Ultimate Guide to Dynamics 365 Pricing and Licensing

        Microsoft Dynamics 365 integrates powerful ERP and CRM capabilities in the cloud to provide busi ...

  5. Altium Designer在原理图中复制报错InvalidParameter解决

    Altium Designer 原理图复制出现  InvalidParameter Exception Occurred In Copy    解决方案为将下图红框中的√去掉 将红框中√去掉就点击右下 ...

  6. python 部署django项目到公网 无法连接

    https://blog.csdn.net/xiongzaiabc/article/details/108448390 服务器后台运行: https://www.jianshu.com/p/4041c ...

  7. 记录linux上无法和本地传输文件

    在学习docker搭建nacos的过程中,涉及到上传本地文件,但是包括从xshell直接拖拽还是xftp上传,都是失败, 最后百度查找多种不同的结果,最后实验下来是文件夹没有权限的问题. 解决步骤如下 ...

  8. 如果摄像头不支持Web Socket,猿大师播放器还能在网页中播放RTSP流吗?

    问: 我们的情况比较复杂,摄像头设备品牌和数量都比较多,分布在全国各地都有,地点分布比较广泛,有的甚至是比较老的型号,如果摄像头设备不支持Web Socket,猿大师播放器还可以在网页中播放RTSP流 ...

  9. mysql 中 insert 大量数据 避免时间戳相同 !!

    时间函数 now() current_timestamp() 和 sysdate() CURRENT_TIMESTAMP and CURRENT_TIMESTAMP() are synonyms fo ...

  10. Python项目案例开发从入门到实战-1.3 Python面向对象设计

    1.3.1定义于使用类 类的定义 class class_name: attribute function 例: class Person: age=18 def say(): print(" ...