python 模块

面向过程编程(理论)

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

缺陷在于,一旦需要修改功能,需要整体改造
用户注册功能:
1.获取用户名和密码
2.组织成固定的格式
3.文件操作写入

def get_info():
    username = input('username>>>:').strip()
    password = input('password>>>:').strip()
    # 用户名或密码不能为空
    if username == 0 or password == 0:
        print('用户名或密码不能为空')
        return
    user_id = {'1': 'admin', '2':'user'}
    print(user_id)
    choice = input('请输入您的身份>>>:').strip()
    if chioce in user_id:
        id = user_id.get(chioce)
        return deal_data(username, password, id)
    else:
        print('输入不合法')

        return

def deal_data(username, password, id):
    data = '%s|%s|%s\n' % (username, password, id)
    return seve_data(data)

def seve_data(data):
    with open(r'userinfo', 'a', encoding='utf8') as f:
        f.write(data)
    print('注册成功')
    
get_info()    

模块简介

1.什么是模块
	模块:一系列功能的结合体

2.为什么要使用模块
	提高开发效率

3.模块的三种来源
	1.python内置的
    2.第三方
    3.自己写的

4.模块的四种表现形式
	1.使用python编写的代码
    2.已被编译为共享库或DLL的C或C++	扩展
    3.包好一组模块的薄(文件夹)
	4.使用C编写并链接到python解释器的内置模块  
	

import句式

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

2.多次导入相同模块,只会执行一次

3.首次导入模块发生的事情
	1.运行导入文件产生该文件的全局名称空间
    2.运行md.py文件
    3.产生md.py全局名称空间,运行md文件内代码,产生的名字全部存档与md.py名称空间
    4.在导入文件的名称空间产生一个md的名字指向md.py全局名称空间
    		
4.import句式导入模块之后
	通过模块点名的方式就可以使用模块中所有的名字,且肯定不会产生冲突

form…import…句式

form md import money,read,change

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

导入模块拓展用法

1.起别名
	既可以给模块名起别名也可以给模块中某个名字起名字
    import mdddddddd as m
    from mddddddd import name as n
2.连续导入
	import 模块名1,模块名2
    	可以连续导入多个模块,但是只有当多个模块功能相似或者属于同一个系列
        如果功能不属于一个系列,那么推荐分行导入
        import 模块1
        import 模块2
	from 模块名1 import 名字1 名字2 名字3
3.通用导入
	form md import *  将模块中所有名字导入
    print(money)
    print(read1)
    print(read2)
    __all__ = ['money', 'read1']  # 在被导入的模块文件中使用__all__指定可以
    							  # 被导入使用的名字

判断文件类型

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

if __name__ == '-__main__':
    read1()
    
pycharm中可以直接敲main按tab键即可自动补全if判断 

模块导入的顺序

'''1.先从内存中查找
   2.再去内置模块中查找
   3.最后去sys.path系统路径查找(自定义模块)
   
给py文件命名的时候尽量不要与内置模块名一样

import sys
print(sys.path)  # 结果中第一个元素永远是当前执行文件所在的路径
某个自定义模块查找不到时的解决方案
	1.自己手动将该模块所在路径添加到sys.path中
    	import sys
        sys.path.append(文件路径)
  
	2.from...import...句式
    	from 文件夹名称 文件夹名称 import 模块名
        from 文件夹名称.模块名称 import 名字

绝对导入与相对导入

在程序中涉及到多个文件之间导入模块的情况一律安装'执行文件'所在路径为准
绝对导入
	始终按照'执行文件'所在的'sys.path'查找文件
相对导入
	句点符(.. '一个点'表示当前文件路径
		.. '两个点'表示上一层文件路径	
		能够打破始终以'执行文件'为准的规则,只考虑两个文件之间的位置
		 相对导入只能在'模块'文件中,不能在'执行文件'中使用

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值