1、模块:
一个模块就是一个python文件,一个python文件也叫做一个模块
常量:常量我们一般用全部大写字母来定义,如:USER_FILE='user.txt'
1、标准模块、标准包,即python自带的模块,如:import time,random,string
2、第三方模块:别人写好的模块,使用时需要先安装才能导入
1)在cmd下执行:pip install XXXX
#在python3中时自带的,Python2下需要手动安装
2)手动安装,从模块的目录下进入cmd,执行python setup.py install
3)直接从pycharm下安装
import xpinyin
name='王俊熹'
s=xpinyin.Pinyin()
print(s.get_pinyin(name))
3、自己写的python文件
#import的实质就是把要导入的python文件全部执行了一遍
import login#import后面是要导入的模块名,即Python文件的名称,不需要加文件后缀
res=login.login_info()#调用模块下的函数时,格式为:模块名.函数名
# 1)import在取寻找python的时候:1、先从当前目录找 2、再从环境变量中找(Python自己的环境变量)
# 2)from 模块名 import 函数名 as test(as表示起别名):只导入模块的其中一个函数
from login import login_info
例子:
import sys
# print(sys.path)#查看当前有那些目录在python的环境变量里面
sys.path.append(r'E:\pythonfile\fourth-class\作业')#r表示原字符,将python文件的目录临时添加到python的环境变量中,执行完毕后消失
import isfloat#将Python文件放入环境变量后就可以导入
isfloat.isfloat(9)
sys.path.insert(0,r'E:\pythonfile\fourth-class\作业')#导入到列表的首位,当不同的环境变量中有相同的文件名时,优先取环境变量列表下标靠前的路径
import isfloat#isfloat.py在多个环境变量中存在
print(isfloat.isfloat(9))
import test#执行结果是:test(即test模块的文件名,test文件内容中放入代码print(__name__))
print(__name__)#执行结果是:__main__
#1、python文件自己运行的时候__name__是__main__
#2、其他python文件里面导入另一个python文件时,那么那个python的__name__变成了导入的哪个python文件名
例子,模块文件中的内容如下:
def coon_mysql(host,port,passwd,user,db):
print(host,port,passwd,user,db)
if __name__ == '__main__':#别人在导入的时候不会走到这个if下的代码,只会执行这个if上面的代码
coon_mysql('1.1.1.1',233,123456,'wxc','mysql')#测试代码
coon_mysql('1.1.1.1',234,654321,'nina','mysql')#测试代码
2、添加断点
点击代码行最左侧,可以打断点,方便调试代码
3、常用模块
参考:http://www.nnzhp.cn/archives/150
os模块
import os
print(os.getcwd()) # 取当前工作目录--常用
print(os.mkdir("test1")) # 创建文件夹--常用
print(os.rmdir("test1")) # 删除指定的文件夹,只能删除空文件夹--常用
print(os.remove("log.log")) # 删除文件,不能删除文件夹--常用
print(os.listdir('.')) # 列出一个目录下的所有文件--常用
os.rename("test", "test1") # 重命名--常用
print(os.linesep)# 当前操作系统的换行符
print(os.sep) # 当前操作系统的路径分隔符--常用
print(os.path.abspath(__file__)) # 获取绝对路径--常用
print(os.path.split("/usr/hehe/hehe.txt")) # 分割路径和文件名,生成一个元组--常用
print(os.path.dirname("/usr/local")) # 获取父目录--常用
print(os.path.exists("/pythonfile/five-class")) # 目录/文件是否存在--常用
print(os.path.isfile("/usr/local")) # 判断是否是一个文件--常用
print(os.path.isdir("/pythonfile/five-class")) # 是否是一个路径--常用
print(os.path.join("/root", 'hehe', 'a.sql')) # 拼接成一个路径--常用
例子:
d={}
print('%s'%os.linesep) # 当前操作系统的换行符
d['hh']=os.linesep
print(d)
4、深拷贝和浅拷贝
#exc exc sss
a=b=c='exc'#三个内存地址,字符串是不可变的
c='sss'
print(a,b,c)
a=b=c=('exc')
c=('sss')
print(a,b,c)
#深拷贝和浅拷贝...
#['wxc', '222'] ['wxc', '222'] ['wxc', '222']----浅拷贝,a和b互相影响
a=b=c=['wxc']#同一个内存地址,列表是可变的
c.append('222')
print(a,b,c)
print(id(a),id(b))
#[13, [4, 5, 6, 7]] [13, [4, 5, 6]]
import copy#------深拷贝,a和b互不影响
a=[13,[4,5,6]]
b=a
b=copy.deepcopy(a)---深拷贝
# b=copy.copy(a)---浅拷贝
a[-1].append(7)
print(a,b)
print(id(a),id(b))
#['wxc'] ['wxc'] ['222']
a=b=c=['wxc']#c重新赋值了,内存地址改变了,但是a和b的内存地址没有变
c=['222']
print(a,b,c)
5、三元运算符
a=5
b=4
c=a if a>b else b
#等同于
if a>b:
c=a
else:
c=b
6:练习程序例子
1)打印出包含数字字母的字符串
#1\替换特殊字符为固定字符replace
#2\按照这个固定字符分割字符串split
#3\循环list,判断list里面每个元素是否包含字母和数字
#4\判断长度,最长的留下,打印
#5\用2个list,一个
import string
def long(st):
a=string.punctuation
for i in a:
if i in st:
st=st.replace(i,',')
st=st.split(',')
new_st=[]
len_st=[]
for i in st:
# if set(i) & set(string.ascii_letters) and set(i) & set(string.digits):
# new_st.append(i)
i=i.strip()
if not i.isdigit() and not i.isalpha() and len(i)>0:
new_st.append(i)
len_st.append(len(i))
max_len=max(len_st)#先找到最大的长度
max_len_count=len_st.count(max_len)
if max_len_count>1:
for l in range(len(len_st)):
if len_st[l]==max_len:
print('最长长度的字符串是%s,最长的长度是%s' % (new_st[l], max_len))
else:
index = len_st.index(max_len) # 再找这个长度的下标
st = new_st[index] # 最长字符串,最长字符串的下标和最大长度的下标相同
print('最长长度的字符串是%s,最长的长度是%s'%(st,max_len))
long('$sd1#111$svda123!svda143!!221&eSSDSDG')
2)打印进度条:
import time
for i in range(10):
time.sleep(1)
print('#',end='',flush=True)#end表示以什么结尾,默认是换行符,flush表示立即写入,不用等程序结束后一起打印
3)文件读写:
def op_file(file_name,content=None):#文件读写
f = open(file_name, 'a+')
f.seek(0)
if content:
f.truncate()
f.write(str(content))
f.flush()
res = None
else:
res = eval(f.read())
f.close()
return res