模块基础知识

模块基础知识

一.面向过程编程

面向过程编程就好比在设计一条产品流水线

用户注册功能
1.获取用户名和密码
2.组织成固定架构
3.文件操作写入文件

'''面向过程编程的缺陷在于:一旦要修改功能 那么需要整体改造(牵一发而动全身)'''
def get_info():
    username = input('username>>>:')
    password = input('password>>>:')
    if len(username) == 0 or len(password) == 0
    	print('用户名或密码不能为空')
        return
    user_idf = {
        '1' : 'admin'
        '2' : 'user'
    }
    print(user_idf)
    choice = input('请输入您的身份》》》')
    if choice in user_idf
    	id = user_idf.get(choice)
        return deal_data(username, password, id)
    else:
        print('输入不合法')
        return
    
def deal_data(username, password, id):
    data = '%s|%s|%s/n' % (username,password,id)
    return save_data(data)

def save_data(data)
	with open(r'wserinfo','a',encoding='utf8')as f:
		f.writh(data)
    print('注册成功')
    
get_info()

  

 

 

 

模块简介

python语言
	最早起源于linux运维、胶水语言、调包侠(贬义词》》》褒义词)
   
1.什么是模块?
	模块:一系列功能的结合体
2.为什么要用模块?
	为了提高开发效率(站在巨人的肩膀上
3.模块的三种来源
	1.内置的(python解释器自带能够直接导入使用)
    2.第三方的(别人写好的发布在网上的  需要先下载后使用)
    3.自定义(自己写的
4.模块的四种表现形式
	1.使用python编写的代码(.py文件
    2.已被编译为共享库或DLL的C或C++扩展
    3.包好一组模块的包(文件夹
    	# 包 其实就是多个py文件(模块)的集合
        	包里面通常会含有一个__init__.py文件
    4.使用C 编写并链接到python解释器的内置模块
"""
学习完模块之后 我们在编写大项目的时候
遇到一些比较复杂的功能可以先考虑是否有相应的模块可以调用
"""

  

 

 

 import句式

# 在学习模块的时候 一定要区分谁是导入文件谁是模块文件
import md # 导入py文件模块 文件后缀一定不要加


"""
多次导入相同模块 只会执行一次

首次导入md模块发生的事情
	1.运行导入文件(import句式.py)产生该文件的全局名称空间
	2.运行md.py文件
	3.产生md.py全局名称空间 运行md文件内代码 将产生的名字全部存档于md.py名称空间
	4.再导入文件名称空间产生一个md的名字指向md.py全局名称空间

import句式导入模块之后
	通过模块名点的方式就可以使用到模块中所有的名字 并且肯定不会产生冲突(指名道姓
"""
# money = 999
# md.change()
# print(money)
# print(md.money)

  

 

 

 

from...import...句式

from md import moeny,rend,chang

"""
from...import...多次导入只会导入一次
	1.先产生执行文件的全局名称空间
	2.执行模块文件 产生模块的全局名称空间
	3.将模块中执行之后产生的名字全部存档于模块名称空间中
	4.在执行文件中有一个money执行模块名称空间中money指向的值
	
from...import...指名道姓的导入某个名字
	在使用的时候直接写名字即可 但是当前名称空间有相同名字的时候
	就会产生冲突 使用的就会变成了当前名称空间
"""
# money = 999
# print(money)
money = 999
# def read1():
#     print('董小姐')
# read1()
change()
print(money)

  

 

 

 

导入模块扩展用法

1.起别名
	即可以给模块起别名也可以给模块中某个名字起别名
    import mddddddd as m            # 文件的起别名
    from mddddddd import mane as m  # 模块中某个名字起别名
    
2.连续导入
	import 模块名1,模块名2
    	# 可以连续导入多个模块 但是只有当多个模块功能相似或者属于同一个系列
        # 如果功能不同并且不属于一个系列 那么推荐分行导入
        import 模块名1
        import 模块名2
    from 模块名1 import 名字1,名字2,名字3
    
3.通用导入
	from md import *    # 将模块中所有的名字全部导入(*表示所有)
    print(money)
    print(read1)
    print(read2)
    print(change)
    __all__ = ['money','read1']  # 在被导入的模块文件中可以使用__all__指定可以被导入使用的名字 (自己的理解:__all__是写在被导入的模块中的,用于限制。如上,在导入时只能导入'money','read1',其他的不能导入)

  

 

判断文件类型

# 判断py文件是作为模块文件还是执行文件
__name__当文件是执行文件的时候会返回__main__
如果文件是被当做模块导入则返回文件名(模块名)    print(__name__) 结果来查看

if __name__ == '__main__':    这样它就是执行文件,导入不了
  read1()                         加上不行被导入的文件
"""在pycharm中可以直接敲 main按tab键即可自动补全if判断"""

 

循环导入

"""以后我们在导入模块的时候如果出现了循环导入的情况 说明你程序设计的不合理"""
# 记住在以后的编程生涯中不允许出现循环导入的现象!!!

一错再错
	1.调换顺序
    	将彼此导入的句式放在代码的最后
    2.函数形式
    	将导入的句式放入函数体代码 等待所有的名字加载完毕之后再调用

 

 

 

 

模块导入的顺序

"""
1.先从内存中查找
2.再去内置模块中查找
3.最后去sys.path系统路径查找(自定义模块)
如果都没有查找到则报错
"""

# 以后在给py文件命名的时候尽量不要与内置模块名冲突

import sys
print(sys.path)  # 结果中第一个元素永远是当前执行文件所在的路径


当某个自定义模块查找不到的时候解决方案
	1.自己手动将该模块所在的路径添加到sys.path中
    	import sys
        sys.path.append(r'D:\py20\day18\aaa')
    2.from...import...句式
    	from 文件夹名称.文件夹名称 import 模块名
        from 文件夹名称.模块名称 import 名字

  

 

posted @ 2021-11-23 17:23  殷国敏  阅读(82)  评论(0)    收藏  举报