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'查找文件
相对导入
	句点符(.. '一个点'表示当前文件路径
		.. '两个点'表示上一层文件路径	
		能够打破始终以'执行文件'为准的规则,只考虑两个文件之间的位置
		 相对导入只能在'模块'文件中,不能在'执行文件'中使用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值