Python基础(4)——模块、内置函数、匿名函数、常用模块、OS模块、time模块
目录:
一、模块
1、引用环境变量中模块
2、引用其他文件中的模块
3、引用第三方模块
二、内置函数
三、匿名函数
四、常用模块
五、OS模块
六、time模块
正文:
一、模块
一个py文件就是一个模块,import 一个模块 实际上就是把一个py文件从头到尾执行一遍
执行时,查找模块顺序:首先从当前目录下找,其次从环境变量目录找
1、引用环境变量中模块
sys.path环境变量目录(list)
import sys print(sys.path)
![]()
2、引用其他文件中的模块:
方法1:将py文件加入环境变量目录下则可import


import ppp

方法2:将目录加入环境变量list
仅本次生效
本次py文件位置F:\python代码\python_workspace\day5,想要调用day4文件夹check_float.py中is_float方法判断输入是否为小数
import sys sys.path.append(r'F:\python代码\python_workspace\day4') sys.path.insert(0,r'F:\python代码\python_workspace\day4') #均可,指定插入到首个
import check_float
print(check_float.is_float('--'))


备注:
1)import其他模块会标红,解决办法:右键----Mark Directory as----Resource Root

2)被引用模块部分测试代码不希望被执行
在测试代码前加if __name__ == '__main__': 这个模块被导入时不会执行if下面的代码
被引用模块a:
def execute_sql(sql): print('执行sql',sql) if __name__ == '__main__': execute_sql('select') execute_sql('delete') execute_sql('update')
执行文件b:
import a a.execute_sql('aaaaaa')

if __name__ == '__main__': 执行本模块a.py时__main__的值为__name__ 可以执行成功;
当被b.py文件import时__main__的值为 a
3、安装下载第三方模块
1)使用命令安装 pip install xxx

常见问题:
a.命令不存在:安装python时一定要加入环境变量目录
C:/python/ #自己的安装目录
C:/python/Scripts #安装目录下的scripts
b.perl
where pip --> pip_hhh
c.修改pip源
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)
2)手工安装
例如安装pymysql 到https://pypi.org/project/PyMySQL/#files 官网下载

whl文件安装
pip install PyMySQL-0.9.3-py2.py3-none-any.whl

.tar.gz文件安装
直接解压,到文件所在目录python setup.py install

3)外部模块安装
可从百度搜索有的第三方模块即可直接使用
例如安装xpinyin 安装成功后可使用第三方模块中的方法

import xpinyin p = xpinyin.Pinyin() print(p.get_pinyin('韩梅梅'))

二、内置函数
1、all() any()
all([1,2,3,4]) 判断可迭代的对象里面的值是否都为真
any([0,False,[],''])#一个为真即为真,全部为假则为假
#判断可迭代的对象里面的值是否都为真 print(all([1,2,3,4])) print(all([1,2,3,4,False])) a=b=c=False if (all([a,b,c])): print("真") #一个为真即为真,全部为假则为假 print(any([0,False,[],''])) print(any([1,2,3,4,False]))

2、max() min() round()
max 返回最大值
min 返回最小值
round(数值,保留几位小数)
print(max([1,2,3,4])) print(min([1,2,3,4])) print(round(11.11988,2))#保留几位小数

3、dir()
打印传入对象的可调用方法(可在查找可调用的方法时使用)
a='1' print(dir(a))#打印传入对象的可调用方法

4、bin() chr() ord() hex() oct ()
print(bin(10)) #10进制转2进制 print(chr(10))#打印数字对应的ascii (回车) print(ord('b'))#打印字符串对应的ascii print(hex(111))#数字-->8进制 print(oct(111))#数字-->16进制


5、exec()
动态执行代码
s=''' for i in range(10): print(i) ''' exec(s)#用来执行python代码

6、eval()
用来动态执行python代码,简单的,运算等简单代码
# # eval() 用来动态执行python代码,简单的,运算等简单代码 result = eval('[1,2,3]') print(result) result = eval('1+2') print(result)

7、filter() 过滤
把后面迭代对象根据前边的方法筛选
#会自动循环你传给他的list,然后把list里面每一个元素传给指定函数
# 如果函数结果返回True,那么保留这个元素
def oushu(number): if number%2==0: return True l=range(1,11) l2=[] for i in l: if oushu(i): l2.append(i) print(l2) #使用filter l3=list(filter(oushu,l)) #(fuc_name,list)将list传入function自动循环true留下 print(l3)

8、map()
#会自动循环你传给他的list,然后把list里面每一个元素传给指定函数,
#把函数返回的结果保留下来
l4=list(map(oushu,l)) print(l4) result = list(map(str,range(1,101))) print(result)

9、locals() globals()
locals()#获取当前函数里面的局部变量
globals()#获取当前文件里面的全局变量
def test(): a=1 b=2 #返回参数为字典 print(locals())#获取当前函数里面的局部变量 print(globals())#获取当前文件里面的全局变量 test()

10、zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
a=['fd','hzy','ds'] b=['1224','456','789'] c=['1','2','3'] for username,password,c in zip(a,b,c): print(username,password,c) for username in zip(a,b,c): print(username) # [ # ['fd','1234','1'] # ['hzy','456','2'] # [...] # ]

11、 exit() quit()
退出程序
a=input('输入0退出') while True: if a=='0': exit('结束') else: a = input('输入0退出')

三、匿名函数
lambda 匿名函数(定义简单功能) 入参:返回值
a = lambda x:x+1 #匿名函数(定义简单功能) 入参:返回值 b = lambda x,y:x+y result = [a(1),b(1,2)] print(result) c=list(filter(str,[1,2,3,4,5])) d=list(filter(lambda x:str(x),[1,2,3,4,5])) print(c) print(d)

四、常用模块
1、random模块
random.randint()
random.uniform()
random.choice()
random.sample()
import os,random,sys,time,string print(random.randint(1,10))#[1,10]包含1,10 print(random.uniform(1,10))#产生随机小数 print(random.choice(string.ascii_lowercase))#随机选择一个元素 print(random.sample(string.ascii_lowercase,2))#随机取多个元素(注意数组越界问题) l=[random.choice(string.digits) for i in range(6)]#有可能重复 l2=random.sample(string.digits,6)#不会重复 print(''.join(l)) print(''.join(l2))

2、 random.shuffle
洗牌,打乱顺序
l=[1,2,3,4,5,6,7,8] random.shuffle(l) print('打乱之后',l)

3、sorted() 排序
s='48548875584234' result=sorted(s) result2=sorted(s,reverse=True) print(result) print(result2)

练习:
根据字典中分数进行排序
原理:将字典转为二维数组然后进行排序
d={ 'fd':100, 'ds':93, 'lhy':88, 'hzy':35 } vs =sorted(d.values(),reverse=True) for v in vs: for key,value in d.items(): if v==value: print(key,value) #[('fd', 100), ('ds', 93), ('lhy', 88), ('hzy', 35)] print(d.items()) #转为2维数组 result=sorted(d.items(),key=lambda x:x[1],reverse=True) #根据分数排序倒序 print(result) result=sorted(d.items(),key=lambda x:x[0],reverse=False) #根据名字排序 print(result)

五、OS模块
1、创建、删除文件
# mkdir与makedirs区别:父目录不存在报错。makedirs父目录不存,创建父目录 os.mkdir('python') #当前目录 os.mkdir('F:\python网课\python代码\python_workspace\java') #绝对路径 os.makedirs('java/day1')#父目录不存,创建父目录 os.makedirs('java/day2') os.remove() #删除文件,不能删除文件夹 os.rmdir('python')#删除空文件夹 os.rename('java','java1') #重命名,获取当前所在的目录 print(os.getcwd()) #获取当前所在的目录 os.chdir('F:\python网课\python代码\python_workspace\java')#进入到某个目录 os.mkdir('java2') print(os.getcwd()) #F:\python网课\python代码\python_workspace\java print(os.environ) #获取系统环境变量里面的配置

2、路径相关
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.getctime('a.py'))#修改时间 print(os.path.getatime('a.py'))#最后一次访问时间

3、
os.path.split 分隔路径和文件名的
os.path.join 拼接路径
os.path.abspath() 把相对路径转化为绝对路径
#os.path.split分隔路径和文件名的 print(os.path.split('F:\python代码\python_workspace\day5\a.py')) p='e:'+os.path.sep+'movies'+os.path.sep+'欧美大片' print(p) #拼接路径 os.path.join print(os.path.join('e:','movies','欧美大片')) #把相对路径转化为绝对路径 os.path.abspath() print(os.path.abspath(r'a.py')) print(os.path.dirname(__file__))#取父目录

练习:

import os base_path=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sql_file=os.path.join(base_path,'sqls','create.sql') print(sql_file)

4、os.walk()
循环找到该目录下所有文件和文件夹
for cur_path,dirs,files in os.walk(r'F:\python代码\python_workspace\day5'): print(cur_path,dirs,files) # 例:找到目录下所有MP4文件 for cur_path,dirs,files in os.walk(r'F:\python\学习视频'): print('在%s目录下查找中'%cur_path) for file in files: if file.endswith('.mp4') or file.endswith('.avi')or file.endswith('.vep'): print('发现小电影在%s目录下'%cur_path) break

六、time模块
#时间戳 一串数字 #从unix元年
#格式化好的时间 2020-08-29 17:24:38
# 获取当前时间戳 print(time.time()) print(time.strftime('%Y-%m-%d %H:%M:%S'))#当前格式化好的时间 seven = int(time.time()+60*60*24*7) print(seven)

#时间戳<--转化-->格式化时间
str_time = '2020-08-29 17:32:32'
time_stamp = 1599298352
#时间戳转化为格式化时间 lt=time.localtime(time_stamp)#当前时区的时间 dt=time.gmtime(time_stamp)#标准时区的时间 print(lt) print(dt) print(time.strftime('%Y-%m-%d %H:%M:%S',lt))
#格式化时间转化为时间戳 time_tuple= time.strptime(str_time,'%Y-%m-%d %H:%M:%S') time_stamp_nwo = time.mktime(time_tuple) print(time_stamp_nwo)

mkdir

浙公网安备 33010602011771号