21.python的模块(Module)和包(Package),, 目录
21.python的模块(Module)和包(Package),, 目录
目录
模块(Module)和包(Package) 模块(modue)的概念 模块导入方法 1.import 语句原文:https://www.cnblogs.com/yuanchenqi/article/5732581.html
模块(Module)和包(Package)
模块(modue)的概念
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。
使用模块有什么好处?
最大的好处是大大提高了代码的可维护性。
其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
所以,模块一共三种:
python标准库
第三方模块
应用程序自定义模块
另外,使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
模块导入方法
1.import 语句
import osdef file_handler(backend_data,res=None,type='fetch'): if type == 'fetch': with open('haproxy.conf','r') as read_f: tag=False ret=[] for read_line in read_f: if read_line.strip() == backend_data: tag=True continue if tag and read_line.startswith('backend'): # tag=False break if tag: print('\033[1;45m%s\033[0m' %read_line,end='') ret.append(read_line) return ret elif type == 'change': with open('haproxy.conf', 'r') as read_f, open('haproxy.conf_new', 'w') as write_f: tag = False has_write = False for read_line in read_f: # server if read_line.strip() == backend_data: tag = True continue if tag and read_line.startswith('backend'): tag = False if not tag: write_f.write(read_line) else: if not has_write: for record in res: write_f.write(record) has_write = True os.rename('haproxy.conf', 'haproxy.conf.bak') os.rename('haproxy.conf_new', 'haproxy.conf') os.remove('haproxy.conf.bak')def fetch(data): # print('\033[1;43m这是查询功能\033[0m') # print('\033[1;43m用户数据是\033[0m',data) backend_data='backend %s' %data return file_handler(backend_data)def add(): passdef change(data): # print('这是修改功能') # print('用户输入的数据是',data) backend=data[0]['backend'] #文件当中的一条记录 www.oldboy1.org backend_data='backend %s' %backend #backend www.oldboy1.org # server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000 old_server_record='%sserver %s %s weight %s maxconn %s\n' %(' '*8,data[0]['record']['server'], data[0]['record']['server'], data[0]['record']['weight'], data[0]['record']['maxconn']) new_server_record = '%sserver %s %s weight %s maxconn %s\n' % (' ' * 8, data[1]['record']['server'], data[1]['record']['server'], data[1]['record']['weight'], data[1]['record']['maxconn']) print('用户想要修改的记录是',old_server_record) res=fetch(backend) #fetch('www.oldboy1.org') print('来自change函数--》',res) if not res or old_server_record not in res: return '你要修改的记录不存在' else: index=res.index(old_server_record) res[index]=new_server_record res.insert(0,'%s\n' %backend_data) file_handler(backend_data,res=res,type='change')def delete(): passif __name__ == '__main__': msg=''' 1:查询 2:添加 3:修改 4:删除 5:退出 ''' msg_dic={ '1':fetch, '2':add, '3':change, '4':delete, } while True: print(msg) choice=input('请输入你的选项:').strip() if not choice:continue if choice == '5':break data=input('请输入你的数据:').strip() if choice != '1': data=eval(data) res=msg_dic[choice](data) print('最终结果是--》',res)# [{'backend':'www.oldboy1.org','record':{'server':'2.2.2.4','weight':20,'maxconn':3000}},{'backend':'www.oldboy1.org','record':{'server':'2.2.2.5','weight':30,'maxconn':4000}}]
21.python的模块(Module)和包(Package)
相关内容
- 还在撸Python3.7,Python3.9新鲜出炉,带你尝鲜解读,
- Python-jQuery,Python,1. jQuery是
- python 省略号 三个点...的含义,省略号的含义有哪些,
- Python 实现随机打乱字符串,字符串,# 随机打乱字符串
- [tools]python的mkdocs模块分分钟将md搞成一个网站,mkdocs
- python发短信,python读取短信验证码,车牌摇号想给自己手
- Python编程练习(一),,学习中,都是从书上找
- python 绘制五角星,python绘制五角星,codeimport
- python网站项目构思_20191103,python项目实例,python网站项目
- Python描述器,描述器,描述器由一个类对象定
评论关闭