zoukankan      html  css  js  c++  java
  • 三、Python基础(4)

    (一)模块管理

    1、导入模块的原理和顺序:标准模块(Python内置自带,可直接使用import导入)、第三方模块(外包的使用,需要自己安装)、程序自定义模块(自己写的模块)。

    一个Python文件就是一个模块,查找模块,首先在当前目录下进行寻找,如果当前目录下没有,然后就从python环境变量目录里面找。

    (1)首先需要分别新建 a.py 和 b.py 两个文件

    a.py 中输入打印输出内容,b.py 导入(import)a.py 文件,然后运行b.py文件,查看运行结果显示的是:a.py文件打印内容,如图所示:

    如图,import 一个模块实质上,就是把py文件从头到尾执行了一遍。若import的模块不存在,报错,例如:ModuleNotFoundError: No module named 'lll'。

    (2)如何查看环境变量

    import sys
    print(sys.path)

    (3)添加指定的目录,通过以下方式

    sys.path.append(r'D:python-测试开发Python')
    # 将目录加到最前面
    sys.path.insert(0,r'D:python-测试开发Python')

    (4)导入模块方式

    # import my_model
    # print(my_model.name)
    # my_model.my_func()
    from my_model import name as XXX

    (二)第三方模块安装

    1、if __name__ == '__main__' 判断

    (1)if __name__ == '__main__' 判断:在当前文件内执行不起作用

    # if __name__ == '__main__':    # 输入main提示打印出来
    
    
    def func():
         print('abc')
     if __name__ == '__main__':     # 在当前文件内执行不起作用
    
         print(1)
         func()

    (2)文件B import 文件A模块时 ,关于A模块里面的【if __name__ == '__main__'】下面的代码不会执行,如图所示:

    (3)_ _ name _ _代表是什么:

    2、安装第三方模块:(例如使用pip安装 pymysql)

    (1)第一种安装:pip install XXX

    (2)首先要下载whl结尾的文件,然后安装:pip install xxx.whl文件,例如:pip install PyMySQL-0.9.3-py2.py3-none-any.whl 

    (3)首先要下载压缩包tar.gz的结尾文件,然后解压,进入该解压目标,执行setup.py安装

    (4)若安装时命令提示不存在,故安装Python的时候需要加入环境变量的目录

    D:python               #安装目录
    
    D:pythonScripts        # 安装目录下的scripts

    (5)perl,Win7系统里内置有Perl语言,Perl语言默认加入环境变量,里面也有pip命令,这时候需要输入:

    where pip 
    # 找pip命令,然后将之改名,例如用pip安装时,就会去找Python自带的pip

    (6)pip源:所有开发者将开发的代码上传到pip源上,供别人下载,由于国外原因,网络比较慢导致一直重试,安装失败

     解决方法是:修改pip源,执行下面的文件:修改pip源.py

    import os,sys,platform
    ini="""[global]
    index-url = https://pypi.doubanio.com/simple/
    [install]
    trusted-host=pypi.doubanio.com
    """
    os_version=platform.platform()
    if 'Windows' in os_version:
        os_flag=False
        file_name='pip.ini'
    else:
        os_flag=True
        file_name='pip.conf'
    if os_flag==True:
        pippath=os.environ["HOME"]+os.sep+".pip"+os.sep
    else:
        pippath=os.environ["USERPROFILE"]+os.sep+"pip"+os.sep
    if not os.path.exists(pippath):
        os.mkdir(pippath)
    with open(pippath+file_name,"w") as f:
        f.write(ini)

    (7)卸载安装

    pip uninstall XXX

    (8)升级到最新版本

    pip install --upgrade XXX

    (9)导出Python现有已安装过的第三方版本模块

    pip freeze > requirements.txt

    (10)安装指定文件里面的模块

    pip install -r requirements.txt

    (三)内置函数

    1、常用内置函数

    # python内置函数
    list()
    dict()
    tuple()
    str()
    int()
    float()
    set()
    print()
    input()
    type()
    id()
    len()

    2、扩展内置函数

    print(all([1,2,3,4]))     #判断可迭代的对象里面的值是否都为真 
    
    print(max(111,12))     #取最大值 
    
    print(min([1,2,3,4]))    # 取最小值
    
    print(round(11.11,2))   #取几位小数 
    
    #把后面的迭代对象根据前面的方法筛选 
    print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))
    
    print(map(lambda x:x>5,[1,2,3,4,5,6]))
    
    #判断可迭代的对象里面的值是否有一个为真        
    print(any([0,1,2,3,4]))
           
    print(bin(10))             #十进制转二进制
            
    print(chr(10))             #打印数字对应的ascii
    
    print(ord('b'))             #打印字符串对应的ascii码
            
    print(dict(a=1,b=2))   #转换字典
            
    print(dir(1))               #打印传入对象的可调用方法
            
    #执行python代码,只能执行简单的,定义数据类型和运算
    print(eval('[]'))
            
    print(exec('def a():pass'))  #执行python代码
            
            
    print(globals())             #返回程序内所有的变量,返回的是一个字典
            
    print(locals())               #返回局部变量
                   
    print(hex(111))                               #数字转成16进制      
            
    print(oct(111))                                #把数字转换成8进制
                 
    print(sorted([2,31,34,6,1,23,4]))      #排序
            
    dic={1:2,3:4,5:6,7:8}        
    print(sorted(dic.items()))                 #按照字典的key排序
    
    #按照字典的value排序        
    print(sorted(dic.items(),key=lambda x:x[1]))
    
    __import__('decorator')     #导入一个模块

    3、exec()函数和eval()函数:

    S ='''
        for i in range(10):
         print(i)
     '''
    
    exec(S)              # 用来动态执行Python代码的
    result = eval('{}')  # 用来动态执行Python代码的,简单的
    print(result)
    print(eval())

    4、filter() 和map() 函数的区别:

    # filter()   # 过滤
    # map
    def oushu(number):
         if number %2 ==0:
             return True
    
    l = range(1,11)
    l2 = []
    for i in l:
         if oushu(i):
             l2.append(i)
    
    result = list(filter(oushu,l))
    result2 = list(map(oushu,l))
    print(l2)
    print(result)
    print(result2)
    
    # filter会自动循环你传给它的list,然后把list里面的每一个元素传给指定的# 函数,如果这个函数结果返回的是true,那么就保留这个元素
    
    # map 保存函数的返回值,若没有返回值显示为:None
    
    # result3 = list(map(str,range(1,101)))
    # print(result3)

    5、globals() 和locals()函数

    def test():
         a = 1
         b = 2
         print(locals())     # locals()  获取当前函数里面的局部变量
         print(globals())    # globals() 获取当前文件里面的全局变量
    test()

    6、zip()函数:

    a = ['Amy','Mary','Bob','Nancy','Helen']
    b = ['1234','4578','1230','0145','01236']
    for username,password in zip(a,b):
         print(username)
         print(password)
    
    # zip()   把几个数组压缩在一起

    7、sorted() 函数

    s= '25456456711'
    result = sorted(s)
    
    print(result)                           # sorted 默认升序 
    
    print(sorted(s,reverse=True))  # 降序排列

    实例:

    # 字典是无序的,把字典d进行排下序
    d ={
        'Amy':100,
        'Mike':65,
        'Bob':78,
        'Apple':98
    }
    
    # 方法一:
    # VS = (sorted(d.values(),reverse=True))
    # for v in VS:
    #     for key,value in d.items():
    #         if v ==value:
    #             print(key,v)
    
    # 方法二:
    def get_value(x):
        return x[1]
    
    result =sorted(d.items(),key=lambda x:x[1],reverse=True)
    print(result)
    
    result1 =sorted(d.items(),key=get_value,reverse=True)
    print(result1)

    8、quit() 和 exit():直接退出程序

    9、enumerate:枚举

    enumerate # 枚举
    
    l = ['a','b','c','d']
    # for i in enumerate(l):
    #     print(i)
    
    for index,item in enumerate(l,1):
        print('%s =>'%(index,item))

    10、最常用的内置函数

    (1)len type id print input open
    (2)round min max filter map zip exec eval

    (四)匿名函数:函数没有名字

    1、匿名函数用:lambda

    # 普通的函数
    def write_file():
        pass
    
    # 匿名函数只能写些简单的函数
    lambda x : x+1

    2、实例:

    #冒号前面的 x是:入参
    #冒号后面的X+1是:返回值
    a = lambda x:x+1    # a = lambda x,y:x+y
    result = a(1)           # result = a(1,2)
    print(result)
    
    
    filter(lambda x : str(x), [1,2,3,4,5])
    #效果跟下面的是一样的:
    filter(str,[1,2,3,4,5])

    (五)random模块

    1、Python自带的常用模块

    # Python中自带的常用模块,处理日常的操作
    import os,random,sys,time,string

    2、random.randint()  随机数模块:产生一个随机数范围

    # 产生1到10之间的随机数
    print(random.randint(1,10))  

    3、其他随机模块

    #产生一个范围的随机数
    print(random.randint(1,10))
    
    # 产生一个范围的随机小数
    print(random.uniform(1,10))
    
    # 随机选择一个元素
    print(random.choice(string.ascii_lowercase))
        
    # 随机取多个元素,一般应用于生成随机验证码
    print(random.sample(string.ascii_lowercase,6))  
    
    # 打乱顺序,洗牌
    random.shuffle()
    
    l3 = [1,2,3,4,5,6,7,8,9]
    print('打乱之前的',l3)
    random.shuffle(l3)     # 打乱顺序
    print('打乱之后的',l3)

    4、实例:random.choice() 和 random.sample() 的区别

    # 可能会产生重复的元素
    l = [random.choice(string.digits) for i in range(6)]    
    
    # 取的这几个元素里面,它不会有重复的
    l2 = random.sample(string.digits,6)
      
    print(''.join(l))
    print(''.join(l2))

    (六)OS模块操作

    1、Python中,导入OS模块

    import OS

    2、OS模块相关

    # 操作系统相关的
    # os.listdir('')   获取某个目录下的内容
    
    print(os.listdir('D:python-测试开发Pythonxzhday5'))
    
    #创建文件夹,父目录不存在的时候,会创建父目录
    os.makedirs()
    
    #创建文件夹
    os.mkdir()
    
    #只能删除文件,不能删除文件夹
    os.remove()
    
    # 删除空文件夹的
    os.rmdir()
    
    #对于文件夹和文件,都可以重命名
    os.rename()
    
    #获取当前文件所在的目录
    os.getcwd()
    
    #进入到某个目录里面
    os.chdir()
    
    # 获取系统环境变量里面配置的内容
    os.environ()
    
    #执行操作系统的命令:只执行,但结果拿不到,返回的是执行是否成功
    os.system()
    
    #执行操作系统的命令,执行结果可以拿到
    os.popen()
    
    # 判断当前系统的路径分隔符
    print(os.path.sep)  
    
    # 是否为文件
    print(os.path.isfile('a.py'))  
    
    # 是否为文件夹 
    print(os.path.isdir('a.py'))
               
    # 文件/文件夹是否存在
    print(os.path.exists('a.py'))
             
    # 获取大小
    print(os.path.getsize('a.py')) 
    
    # 创建时间      
    print(os.path.getctime('a.py'))
    
    # 修改时间      
    print(os.path.getmtime('a.py'))
    
     # 最后一个访问时间      
    print(os.path.getatime('a.py') )    
    
    # 分割路径和文件名
    print(os.path.split('D:python-测试开发'))    
    
    p ='D:' + os.path.sep +'movies' +os.path.sep + '欧美大片'
    print(p)
    # 拼接路径 os.path.join
    print(os.path.join('D:','movies','欧美大片'))  
    
    # os.path.abspath()     把相对路径转换成绝对路径
    print(os.path.abspath(r'..day5a.json))

    3、实例:

    for cur_path,dirs,files in os.walk(r'D:python-测试开发Pythonxzhday5'):
        # print(cur_path,dirs,files)
        for file in files:
            if file.endswith('.mp4') or file.endswith('.avi'):
                print('发现小电影在%目录下'%cur_path)
                break

    (七)时间操作

    1、Python中需要导入time模块

    import time
    # 时间戳  一串数字
    # 格式化的时间:XXXX-XX-XX  XX:XX: XX

    2、Python中如何获取时间

    # 获取当前的时间戳
    print((time.time())) 
    
    # 获取当前格式化好的时间
    print(time.strftime('%Y-%m-%d %H:%M:%S'))  

    (1)如图所示:

    (2)如图所示,时间戳小数点后面有6位小数,若想要去掉小数,这时需要加上int:

    print(int(time.time()))

    3、时间戳如何转换格式化好的时间(需要将时间戳转换成时间元组,然后再将时间元组转换成格式化好的时间)

    # 时间戳转格式化好的时间
    
    time_stamp =1599298313                               #时间戳
    
    lt = time.localtime(time_stamp)                       # 当前时区的时间
    
    bt = time.gmtime(time_stamp)                       # 标准时区的时间
    
    print(lt)
    print(bt)
    
    print(time.strftime('%Y-%m-%d %H:%M:%S',lt))

    4、 格式化好的时间如何转换成时间戳(将格式化好的时间转换成时间元组,再将时间元组转换成时间戳)

    # 格式化好的时间转时间戳
    
    #  格式化好的时间:年月日,时分秒
    str_time = '2020-08-29 17:31:02'    
    
    #  格式化好的时间:年月日
    str_time2 = '2020-08-29'
    
    time_tuple = time.strptime(str_time,'%Y-%m-%d %H:%M:%S')
    time_tuple2 = time.strptime(str_time2,'%Y-%m-%d')
    
    # 时间元组转换成时间戳
    time_stamp_nwo = time.mktime(time_tuple)
    print(time_stamp_nwo)
    温故而知新
  • 相关阅读:
    slots属性(省内存,限制属性的定义)
    自定制格式化方式format
    改变对象的字符串显示__str__repr
    __getattribute__和item系列
    授权(类似)
    双下划线开头的attr方法
    动态导入模块
    反射
    python的单下划线和双下划线
    在子类中调用父类的方法
  • 原文地址:https://www.cnblogs.com/krystal-xiao/p/13586350.html
Copyright © 2011-2022 走看看