三、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)
温故而知新
原文地址:https://www.cnblogs.com/krystal-xiao/p/13586350.html