Python--8

笔记:

模块和包:


模块和包的基本概念:
    模块(module):一个.py文件就是一个模块
    包(package):类似于一个文件夹,可以管理和保持很多模块
            注意:真正的包:__init__.py

    通过包和模块,我们就可以项目化的管理软件


python中模块的导入问题:
    import xxx        # 直接导入需要的模块或者包
    import xxx.xxx.xxx.xx    # 如果存在多层,可以这样层层导入

    import xxx as alias    # 通过别名,简化导入的模块名称

    from xx import xxx    # python提供的一种导入
    from xx import xxx as a    # python提供的一种导入,可以别名


注意:在python,我们如果遇到比较复杂的命令,可以使用别名方式,将其简化
    as


模块根据创建者存在三种分类:
    官方内置的模块:    python主目录下/lib
    自定义模块        存在项目中
    第三方            需要下载 python主目录下/lib/site-packages


使用pip工具进行下载
    pip install 模块名称
    pip uninstall 模块名称


main函数的作用和使用
    


    javascript、python、PHP等等编程语言,若数据类型编程语言,是脚本语言,是解释型编程语言
    所以这些编程语言往往没有main,即便是有,也不知程序的入口,有特殊作用

    python其实是有main函数,但是作用不是程序的入口

    main函数是用来写测试代码,该代码无法被导入到其他模块中!!!

常见内置模块的使用:
    random
    math
    os
    sys
    os.path
    uuid
    hashlib
    hmac
    time
    datetime
    calendar
    ……

随机数模块——random


    [ 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss',
    'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 
    'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 
    'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
    
    |-- random.random()
    |-- random.choices()
    |-- random.choice()
    |-- random.randint()
    |-- random.randrange()
    |-- random.uniform()
    |-- random.shuffle()


数学模块——math
    |-- 三角函数相关的
    |-- ceil
    |-- floor
    |-- degrees
    |-- radians
    |--

四舍五入是全局的round函数

学习模块,掌握两个全局函数
    help
    dir


uuid模块:


    获取一个128位(比特)的永不重复的数字,当然我们使用的时候
    会转换为32个的字符串

    import uuid

    uuid.uuid4().hex

python中跟时间相关的模块非常多:


    time
    datetime
    calendar

    在计算机中时间是非常特殊的东西,为了方便时间的显示,一般是字符串格式
    当然时间在计算机中是对象,为了比较时间,时间又可以表示成数字(时间戳)

time:
    1970-1-1 00:00:00
    有了时间戳,就相当于了有参照点,我们就可以把时间换算成数字,进计算和比较
datetime:

加密模块:
    


hashlib:
hmac:
    这两个模块主要用于hash加密

加密哪些事:
    不可逆加密-- hash加密
        数据校验
        密码加密

        特点:
            单向性    明文  ---> 密文,但是密文无法还原成明文
            唯一性    只要明文一致,得到的密文也是一定的


    可逆加密:
        对称加密:
            加密和解密时使用一个相同的秘钥
            DES

        非对称加密
            加密和解密时使用的不同的秘钥,其本质是一对秘钥
            RSA
        

hashlib:
    公共、公开的基于hash加密的各种算法、md5、sha512……

hmac:
    会对明文进行对称加密和hash加密

    常见可以做密码加密等功能

要求:通过教的学习模块的方式,尝试着使用如下一些第三方模块
    操作Excel的一些模块
        pandas
        openpyxl
        xlswriter
        xlrd【了解即可】
        xlwt【了解即可】

IO流:

什么是IO流:


    input output stream:输入输出流
    IO流分为广义上:计算机中数据的流动,像保存数据到硬盘、将数据通过网络传输到其他电脑中
    狭义上:内存【CPU】和磁盘之间的数据流动


IO流的分类:


    基于数据流动方向:
        |-- 输入流
        |-- 输出流
    数据的格式:
        |-- 字节流
        |-- 字符流
    

python如何处理IO流:


    python提供一个全局函数open(该函数在os模块中也存在),底层就是C语言的fopen函数

with语法:
    在with语法中打开的IO流,with语法结束,会自动调用close进行关闭

对象序列化和对象持久化:
    
    对象序列化:将抽象的对象(抽象概念)通过相关技术转换为可以存储或者传输的字符或者字节
    对象序反列化:将序列化后的字符或者字节通过相关技术转换为可以的抽象的对象(抽象概念)
    对象持久化:将抽象的对象(抽象概念)存储下来
    对象反持久化:存储的对象数据还原成对象

python官方主要提供过了两个持久化的模块:
    pickle
    json
    shelve

pickle:
    pickle.dumps(obj)        # 返回该对象序列化后的字节数据
    pickle.loads(字节数据)        # 反序列化
    pickle.dump(obj, file)        # 直接持久化
    pickle.load(file)        # 
    
    
    
json:
    dumps(obj)        # 返回该对象序列化后      
    loads(字节数据)        # 反序列化                       
    dump(obj, file)        # 直接持久化                     
    load(file)        #                                
 

作业:

demo1:

某个人进入如下一个棋盘中,要求从左上角开始走,
    最后从右下角出来(要求只能前进,不能后退),
    问题:共有多少种走法?
    
    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

    0 0 0 0 0 0 0 0

解:

demo2:

输入一行符号,以#结束,判断其中的对称符号是否匹配。对称符号包括:
    { } 、 [ ] 、 ( )、 < >

    如果对称符号能够实现中间对称,则输出yes
    否则输出no


测试用例

用例一:

输入:
    (<{(({<>}))}>)
输出:
    yes


输入:
    ()()()
输出:
    no

解:

demo3:

给定一个包含n+1个整数的数组nums,其数字在1到n之间(包含1和n),
    可知至少存在一个重复的整数,假设只有一个重复的整数,
    请找出这个重复的数

解:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值