zoukankan      html  css  js  c++  java
  • python学习第15天

    一.内置方法

    1.abs() 绝对值函数

    2.round() 四舍五入(n.5,如果n为偶数不进一,如果n为奇数则进一)

    3.sum() 计算一个序列的和

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

    5.min() 获取一个序列里面的最小值

    max 和min 同sorted(iterable,key=函数)用法相同

    6.pow() 计算一个数值的X次方

    res = pow(2,3,5)
    print(res)
    

    第三个参数的作用是取余

    7.range() 产生制定范围数据的可迭代对象

    8.bin() 将10进制数据转换成二进制

    9.oct() 将10进制数据转换成8进制

    10.hex() 将10进制数据转换成16进制

    11.chr() 将ascii编码转换成字符

    大小写字母相差的ascii编码是32,小写字母更大,a=>97

    12.ord() 将字符转换成ascii编码

    13.eval() 将字符串当做python代码执行

    strvar = "print(111)"
    eval(strvar)
    # strvar = "a = 10" eval执行不了
    

    14.exec() 将字符串当做python代码执行(功能更强大)

    strvar ="a=10"
    exec(strvar)
    strvar="
    for i inrange(10):
        print(i)
    "
    exec(strvar)
    

    要注意:谨慎使用eval和exec尤其是在和用户交互数据的时候

    15.repr() 不转义字符输出字符串

    16.input() 接受输入字符串

    17.hash() 生成哈希值

    两个相同的字符串,无论哈希多少次,都会产生相同的唯一值

    1. 让密码加密 hashlib

    2. 文件的校验 比较文件内容

    二.序列化模块

    序列化:把不能够直接存储在文件中的数据变得可存储的过程

    反序列化:把文件中的数据拿出来,恢复成原来的数据类型的过程

    在文件中存储的数据,要么是字符串,要么是字节流

    python中,所有的数据类型都可以通过dumps和loads进行序列化和反序列化

    (1)pickle模块

    import pickle

    1.dumps 和loads

    dumps() 把任意对象序列化成一个bytes(字节流)

    loads() 把任意bytes反序列化成原来的数据

    #序列化列表
    lst = [1,2,3]
    res = pickle.dumps(lst)
    print(res)
    # 序列化函数
    def func():
    	print("我是func函数")	
    res = pickle.dumps(func)
    print(res)
    # 序列化迭代器
    it = iter(range(10))
    res = pickle.dumps(it)
    
    res = pickle.loads(res)
    print(res, type(res))
    for i in range(3):
    	res2 = next(res)
    	print(res2)
    

    2.dump和load

    dump 把对象序列化后写入到 file-like object(文件对象)中

    dic = {"a":1,"b":2}
    with open("ceshi3.txt",mode="wb") as fp:
    	# dump(要转换的数据,文件对象)
    	pickle.dump(dic,fp)
    

    load 把file-like object(文件对象)中的内容拿出来,反序列化成原来的数据

    with open("ceshi3.txt",mode="rb") as fp:
    	res = pickle.load(fp)
    
    print(res , type(res))
    

    (2)json

    所有编程语言都能都识别的数据格式叫做json,是字符串

    能够通过json序列化成字符串的有如下类型:int float bool str list tuple dict None

    pickle 序列化成字节流

    json 序列化成字符串

    json:

    import json

    1.dumps和loads是一对,序列化成字符串

    dic = {"name":"王振","age":30,"classroom":"python30","family":["爸爸","妈妈","哥哥","姐姐"]}
    # ensure_ascii=False 不通过ascii来显示内容 sort_keys=True 对字典的键来进行排序
    res =json.dumps(dic,ensure_ascii=False , sort_keys=True)
    print(res , type(res))
    
    # loads反序列化成原来的数据类型
    dic = json.loads(res)
    print(dic , type(dic))
    

    2.dump和load是一对,针对文件,把数据进行序列化操作

    dic = {"name":"王振","age":30,"classroom":"python30","family":["爸爸","妈妈","哥哥","姐姐"]}
    with open("ceshi5.json",mode="w",encoding="utf-8") as fp:
    	# dump(要转换的数据,文件对象)
    	json.dump(dic,fp,ensure_ascii=False)
    	
    # load反序列化成原来的数据类型
    with open("ceshi5.json",mode="r",encoding="utf-8") as fp:
    	dic = json.load(fp)
    	
    print(dic, type(dic))
    

    3.json和pickle两个模块的区别:

    1)json序列化后的数据类型是str,所有编程语言都能识别(用于数据交流)

    但是仅限于(int float bool str list tuple dict None

    json不能连续load,只能一次性拿出所有数据

    2)pickle序列化之后的数据类型是bytes(用于数据存储转换)

    所有数据类型都可转化,但仅限于python之间的存储传输

    pickle可以连续load,可以把多套数据放到同一个文件中

    4.try...except...

    抑制报错,如果try代码块里面有问题,就执行except中的代码

    try:
    	with open("ceshi7.pkl",mode="rb") as fp:
    		while True:
    			dic = pickle.load(fp)
    			print(dic)
    except:
    	pass
    
    

    (3)time

    import time

    1.sleep() 程序睡眠等待

    '''程序在当前行,阻塞3秒之后,代码往下执行'''
    # time.sleep(3)
    # print("我睡醒了")
    

    2.进度条

    1)定义进度条样式

    print("[%-50s]" % ("###############"))
    print("[%-50s]" % ("######################"))
    print("[%-50s]" % ("##############################"))
    

    2)让进度条动起来

    strvar = ""
    for i in range(50):
    	strvar += "#"
    	time.sleep(0.1)
    	print("
    [%-50s]" % (strvar) ,end="")
    

    3)根据文件大小,调整进度条的位置

    def progress(percent):
    	if percent > 1:
    		percent = 1
    	
    	# 打印出对应的# 号效果
    	strvar = int(50 * percent) * "#"
    	# %% => %号的符号效果
    	print("
    [%-50s] %d%%" % (strvar , int(100 * percent)) ,end="")
    
    recv_size = 0
    # 假设文件总大小是 1028000
    total_size = 1028000
    while recv_size < total_size:
    	time.sleep(0.01)
    
    	# 一次接受的字节数是1024
    	recv_size += 1024
    	percent = recv_size/total_size
    	progress(percent)
    
  • 相关阅读:
    Hausdorff distance between mesh and its symmertic one.
    Fast algorithm to compute minimum volume oriented bounding box
    C++文件读写详解(ofstream,ifstream,fstream)
    libCURL开源库在VS2010环境下编译安装,配置详解
    VPB和OSGGIS安装
    OpenSceneGraph 笔记--如何导出三角形数据
    OpenGL编程指南(第七版)
    osgAnimation例子的注释的注释
    osg 示例程序解析之osgdelaunay
    VS2010+64+OSG3.2.1之五Plugins dae编译
  • 原文地址:https://www.cnblogs.com/yunchao-520/p/12920106.html
Copyright © 2011-2022 走看看