• day16 面向过程编程/模块介绍/import导入模块/ from...import导入模块/循环导入问题/模块的搜索路径/区分python文件的两种用途/软件开发的目录规范


    面向过程编程

    核心过程二字,过程指的是解决问题的步骤,即先干什么,再干什么

    基于该思想编写程序就好比在设计一条流水线,是一种机械的思维方式。

      优点:复杂的问题流程化,进而简单化

      缺点:扩展性差

     

    #小例子
    #接受用户输入,进行用户名合法性校验,拿到合法的用户名 def check_user(): name=input('username>>').strip() while True: if name.isalpha(): return name else: print('用户名必须全为字母傻叉') user=check_user() print(user) # 接收用户输入密码,进行密码合法性校验,拿到合法的密码 def check_pwd(): while True: pwd1=input('password>>:').strip() if len(pwd1)<5: print('密码长度至少5位') continue pwd2=input('again>>:').strip() if pwd1==pwd2: return pwd1 else: print('两次输入的密码不一致') pwd=check_pwd() print(pwd) # 将合法的用户名与密码写入文件 def insert(user,pwd,path='db.txt'): with open(path,mode='a',encoding='utf-8') as f: f.write('%s:%s '%(user,pwd)) def register():#注册功能分为三个小步骤去实现 user=check_user() pwd=check_pwd() insert(user,pwd) register()#实现成功
    # 接口层
    #
    # 数据处理层
    #
    # # 只负责读写文件
    
    #用户功能层
    def register():# continue  #后面有代码的情况下加continue
        while True:#检测用户名
            name=input('请输入用户名>>:').strip()
            #检测用户是否重复,如果重复了则重新输入,否则break
            res=select(name)#res=['egon','123']
            if res:
                print('用户已经存在')
            else:
                break
    
        while True:#检测密码
            pwd1=input('pwd>>:').strip()
            pwd2 = input('pwd>>:').strip()
            if pwd1 !=pwd2:
                print('两次输入密码不一致,重新输入')
            else:
                break
    
    def tell_info():
        name=input('>>:').strip()
        info=select(name)
        print(info)
    
    #接口层
    def check_user_interface(name):
        res=select(name)
        if res:
            return True
        else:
            return False
    
    #数据处理层
    def select(name):#与用户交互的功能
        with open('db.txt','r',encoding='utf-8')as f:
            for line in f:
                info=line.strip('
    ').split(':')
                if name ==info[0]:
                    return info
    #先让用户处理,结果交给接口层,接口层再交给数据处理层
    

      

    1.什么是模块

    模块是一系列功能的集合体

    常见的模块形式(自定义模块,第三方模块,内置模块):

      1.一个moudle.py文件就是一个模块,文件名是moudle.py,而模块名是moudle

      2.一个包含有__int__.py的文件夹也是模块

      3.已被编译为共享库或DLL的C或C++的扩展

      4.使用c编写并链接到python解释器的内置模块

    2.为什么要用模块

      1.用第三方或者内置模块是一种拿来主义,可以极大的提升开发效率

      2.自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件

         然后程序的各部分组建可以通过导入的方式来引用/中用模块中自定义的功能

    3.如何使用模块

    大前提:模块是被执行文件导入使用,模块的导入必须搞明白谁是执行文件,谁是被导入的模块

    import

      首次import m1导入模块都发生三件事:

      1、先创建一个模块的名称空间

      2、执行m1.py将执行过程中产生的名称都放入模块的名称空间中

      3、在当前执行文件中拿到一个名字m1,该名字是指向模块的名称空间的

      使用方法:指名道姓的访问m1名称空间中的名字 func,优点是不会与当前名称空间中的名字相冲突,

    缺点是每次访问都要加上m1.func

    from.....import

      首次from m1 import func导入模块都发生三件事:

      1、先创建一个模块的名称空间

      2、执行m1.py,将执行过程中产生的名称都放入模块的名称空间中

         3、在当前执行文件中直接拿到一个功能名func,该名字是直接指向模块名称空间中某一个功能的

      使用方法:直接使用功能即可,优点是无需加任何前缀,缺点是容易与当前名称空间中的名字冲突

        def func()

          pass

        func()

    模块的搜索路径

      内存----->内置模块----->sys.path

    1个py文件就是一个模块,在导入时必须从某一个文件夹下找到该py文件
    模块的搜索路径指的就是在导入模块时需要检索的文件夹

    导入模块时查找模块的顺序是
    1、先从内存中已经导入的模块中寻找
    2、内存中如果没有找内置的模块
    3、环境变量sys.path中寻找
    强调:sys.path的第一个值是当前执行文件所在的文件夹

    import sys
    print(sys.path)  #当前文件所在的环境变量
    
    import sys
    sys.path.append(r'C:UsersAdministratorPycharmProjectsuntitledday16dir')
    print(sys.path)
    #关于报错  内存没有,内置没有,找了一圈都没有,所以报错了
    
    from dir import mmm
    mmm.f1()
    

    ********强烈区分开谁是执行文件,谁是被导入的模块

    区分python文件的两种用途

  • 相关阅读:
    【JavaScript DOM 编程艺术】 笔记
    如何循序渐进有效学习 JavaScript?
    如何正确学习JavaScript
    HTML5学习
    window上杀死node进程
    HTML5:离线存储
    js面向对象的理解
    H5项目常见问题及注意事项
    查找已连接过的wifi密码
    flex的兼容
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/9157713.html
Copyright © 2020-2023  润新知