首页 > 其他分享 >模块都补充、软件开发目录规范、正则表达式

模块都补充、软件开发目录规范、正则表达式

时间:2023-09-16 16:24:50浏览次数:44  
标签:文件 软件开发 正则表达式 py phone 导入 模块 import

名字查找顺序

所谓的查找顺序就是在运行代码的时候调用的优先级,这里分成三个优先级:

1.内存

这里可以举一个极端一点的例子,就是我们引入一个模块,然后在引入代码后使用time.sleep停个十几秒,在停止的时间内我们直接把导入的模块文件删除,接下来继续让代码执行模块内的函数或引用变量名,我们会发现代码正常运行。但是结束后就不弄再次运行了。

2.内置模块

内置模块就是python解释器中的模块,当我们在编写模块的时候如果名称跟内置模块中的名称冲突了,就会导致代码直接调用内置模块中的内容。因此我们在编写模块的时候应该尽量避免名称冲突

3.执行文件所在的sys.path

所谓的sys.path就是系统的环境变量,跟我们装python解释器的时候的环境变量作用相似。

这里的sys是一个模块名称,我们可以使用下面的代码获得当前的系统环境变量:

import sys
print(sys.path)  
# 得到的结果是个列表 ,内部是目前的环境变量路径

['D:\\Python27\\day20', 'D:\\Python27\\day20', 'D:\\PyCharm 2021.1.3\\plugins\\python\\helpers\\pycharm_display', 'D:\\Python38\\python38.zip', 'D:\\Python38\\DLLs', 'D:\\Python38\\lib', 'D:\\Python38', 'C:\\Users\\oldboy\\AppData\\Roaming\\Python\\Python38\\site-packages', 'D:\\Python38\\lib\\site-packages', 'D:\\PyCharm 2021.1.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend']

# 上面的列表中第一个元素永远是当前文件所在的路径

之后我们可以使用下面代码添加路径到系统环境变量中去(需要放在执行文件中),这样当我们导入模块的时候就不会因为模块文件不在同一目录导致报错:

1. 把模块所在的路径添加到sys.path中
sys.path.append(r'D:\pythonProject03\day17\mymd')
import ccc
print(ccc.name)

2. 使用from...import句式
    from aaa.bbb.ccc import m1
    from aaa.bbb.ccc.m1 import f1

相对导入和绝对导入

绝对导入就是导入模块的时候需要精确的使用文件的绝对路径:

from mymd.aaa.bbb.ccc.ddd import name  # 可以精确到变量名
from mymd.aaa.bbb.ccc import ddd  # 也可以精确到模块名

相对路径就是导入模块的时候以自身被执行文件所在位置为基础进行查找。

.在路径中表示当前目录
..在路径中表示上一层目录
..\..在路径中表示上上一层目录
不在依据执行文件所在的sys.path 而是以模块自身路径为准
from . import b

相对导入不能使用在被执行文件中,只能使用模块文件中。比如执行文件导入模块后,模块文件中导入了另一个模块,这个模块的路径要么使用绝对导入,要么使用相对导入的方式来导入。

注:由于相对导入的限制条件很多,导致了使用频率偏低,一般使用绝对导入即可。

包的使用

什么是包?
	就是文件夹,其实就是文件夹中包含了一些列的py文件(模块)
    # 包就是一些列模块的组合
包和模块有什么区别呢?
	包中有一个特殊文件:__init__.py文件

    
"""导包其实就是在导包下的__init__.py文件的!"""

包的具体使用

1、当我们使用包来导入模块的时候需要注意在python2和3中双下滑线init.py的需求不一样,但是为了兼容性考虑我们也应该把双下划线init.py加上去。

2、当我们在导入模块的时候,如果只需要包中的几个模块,可以用from的形式来导入指定模块

3、在使用import方式导入模块的时候需要注意,这里并不是一次性导入所有的包中的模块,而是导入双下划线init文件,在文件内有模块的名称就可以通过:包.模块名的形式调用模块中的名称

软件开发目录规范

软件开发目录规范就是跟项目中得文件夹起合适的名字的!

项目名:
    bin 
    	# 放启动文件的 run.py start.py manage.py...
    如果你的启动文件只有一个,也可以不要bin文件夹,可以把启动文件写在项目的跟下
    
    conf (config:配置) 
    	# 放项目的配置文件
        settings.py
        '''就是一些初始化的数据'''
    core # 核心的
    	# 写一些项目的核心逻辑
        src.py 
        	def login():
                pass
            def register():
                pass
    lib # library 库
    	# 这个里面一般写项目使用的公共代码
         common.py
            def outer():
                pass
            
   log
	  # 日志:就是记录一些在代码运行过程中发生的一些事情,可以是正确的,可以是异常的
    	log.log
        
   db
	 # database
      跟项目相关的数据存储都存在db、data
        
    api/
    	# 接口层
   # 当你自定义文件夹名字的时候,一定要是见名知意, 一定不能出现中文的
setup.py  # 安装模块使用的 python setup.py ...
|-- requirements.txt # 目前用不到---> 

		taobao
    		time
        	 os
             requests
             xml
             ...
        # 命令:  
        	reqeusts == 1.11.1
            xml = 1.1.1
     # 命令:       
|-- README
	# 就是项目的说明书

正则表达式

正则表达式是一门独立的技术,适用于所有的编程语言,它的主要作用就是利用一些特殊符号进行查找,可以对一些庞大的数据进行筛选。

举例:

当我们在登陆京东的网站时,需要输入手机号进行登陆,如果我们没有输入正确的手机号格式,就会出现错误提示,这些功能就是用正则表达式来实现的,虽然我们在用python语言的时候,也可以实现一样的功能,但是正则表达式更加方便高效。

以下是纯python代码实现手机号校验:

基本需求:手机号必须是11位、手机号必须以13 15 17 18 19开头、必须是纯数字

'''纯python代码实现'''
while True:
    # 1.获取用户输入的手机号
    phone_num = input('请输入您的手机号>>>:').strip()
    # 2.先判断是否是十一位
    if len(phone_num) == 11:
        # 3.再判断是否是纯数字
        if phone_num.isdigit():
            # 4.判断手机号的开头
            if phone_num.startswith('13') or phone_num.startswith('15') or phone_num.startswith(
                    '17') or phone_num.startswith('18') or phone_num.startswith('19'):
                print('手机号码输入正确')
            else:
                print('手机号开头不对')
        else:
            print('手机号必须是纯数字')
    else:
        print('手机号必须是11位')        
'''python结合正则实现'''
import re

phone_number = input('please input your phone number: ')
if re.match('^(13|14|15|18)[0-9]{9}$', phone_number):
    print('是合法的手机号码')
else:
    print('不是合法的手机号码')

正则表达式:
利用一些特殊的符号匹配出我们想要的数据

正则表达式它是一门独立的语言,跟Python、Java等语言没有关系的
所以,如果想在Python中使用正则表达式,需要借助于re模块,内置的

import re

标签:文件,软件开发,正则表达式,py,phone,导入,模块,import
From: https://www.cnblogs.com/wolongnp/p/17706881.html

相关文章

  • Keil MDK6要来了,将嵌入式软件开发水平带到新高度,支持跨平台(2023-03-11)
    注:这个是MDK6,不是MDK5AC6,属于下一代MDK视频版:https://www.bilibili.com/video/BV16s4y157WF一年一度的全球顶级嵌入式会展EmbeddedWorld2023上,MDK6将展示预览版效果,本月14号-16号,也就是下周二到下周四,为期三天,在德国纽伦堡举办。 重大更新主要如下1、支持跨平台,Windows,Linu......
  • 米联客MLK-CZ05 AMD ZYNQ 7015核心模块硬件手册
    1整体概述自2017年米联客MLK-CZ05-7015-485(MZ7XCORE485)系列开发平台发布以来,米联客ZYNQ系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次......
  • subprocess模块
    subprocess模块是python自带的,安主要用来取代一些旧的模块或方法,如os.system、os.spawn*、os.popen*、commands.*,因此如果需要用python调用外问命令或任务时,则优先使用subprocess模块。使用subprocess模块可以方便地执行操作系统支持的命令。一、subprocess.run()方法:subprocess.......
  • OpenSNS:以乐高的方式做模块化社交系统
    乐高,是一个来自丹麦童话王国拥有80多年历史的玩具品牌。相信在很大一部分人心中,乐高是世界上最好玩的玩具,从小玩到大都玩不腻。即使成年了,看到乐高的玩具还是会忍不住停留下来看很久。在乐高的世界里只有想不到没有做不到!乐高是“模块化”的先驱者,1300多种形状,每个形状都有12种不同......
  • 米联客MLK-CZ02 AMD ZYNQ核心模块硬件手册
    1产品概述米联客开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次升级以确保供货稳定和降低用户的使用成本。MLK_F3-CZ02-7010/7020相比之前核心板......
  • 米联客MLK-CK04 AMD FPGA核心模块硬件手册
    1产品概述MLK-CK04-7K325是米联客电子H系列开发平台的全新高端产品。其核心模块集成电源管理:KintexMLK-CK04-7K325:1.0V核心电源,最大输出24A。用户基于核心模块设计功能底板(提供功能底板设计方案)。降低项目功能底板设计难度和生产成本,加速项目开发。其应用领域包含高速通信;机......
  • 从事软件开发工作的一些感悟
    随着科技的飞速发展,计算机领域成为了一个充满机遇和挑战的领域。对于计算机这个行业,我一直有着浓厚的兴趣,这份兴趣驱使我不断学习,不断成长。在这篇文章中,我将分享我的编程经历以及一些建议,希望能够给那些刚刚踏入编程领域的人一些启发。1寻求工作机会我的编程之路始于大学时学......
  • 米联客MLK_CA03核心模块硬件手册
    1产品概述随着科技的发展,现有的数字产品已经不能满足人们在通信基础设施、医疗电子、工业控制等行业的需求,设计出更高的处理带宽,更广的应用范围、更低的使用功耗的芯片成为芯片厂商的追求。安路科技PH1A系列FPGA包含更多逻辑单元、高速串行的I/O、丰富的存储资源和IP资源,定......
  • Python模块的介绍
    Python模块的介绍什么是模块为什么要用模块模块的分类和形式模块的导入方式导入语句的其他方式判断文件类型什么是模块Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块让你能够有逻辑地组织你的Python代码段。把相关......
  • 模块
    模块的简介模块是Python中非常核心的一块内容,用的非常多,它比较简单1.简介1.模块的本质模块就是一个内部具有一定功能(功能无论大小)的py文件如果把开发程序比喻成制造一台电脑,编写模块就像是在制造电脑的零部件,准备好零部件后,剩下的工作就是按照逻辑把它们组装到一起。2.模块......