(一)模块管理
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)