iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Day5
  • 455
分享到

Python Day5

Python 2023-01-31 02:01:18 455人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

1、什么是模块最常见的场景,一个模块就是包含了一组功能的python文件,例如module.py,模块名是module可以使用import module,四个通用类别:   1 使用Python编写的.py文件   2

1、什么是模块
最常见的场景,一个模块就是包含了一组功能的python文件,例如module.py,模块名是module
可以使用import module,四个通用类别:

      1 使用Python编写的.py文件

      2 已被编译为共享库或DLL的C或c++扩展

      3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

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

2、为什么要用模块

    1、从文件级别组织程序,更方便管理
    2、拿来主义,提升开发效率

1、第一次导入模块,会发生3件事,重复导入只会引用之前加载好的结果

1.产生一个新的名称空间
2.运行spam.py代码,产生的名字都存放于1的名称空间中,运行过程中global关键字指向的就是该名称空间
3.在当前名称空间拿到一个名字spam,该名字指向1的名称空间
引用spam.py中名字的方式:spam.名字
强调:被导入的模块在执行过程中使用自己独立的名称空间作为全局名称空间

2、起别名:import spam as sm
3、一行导入多个模块:import time,sys,spam

    优点:引用时不用加前缀,简单
    缺点:容易与当前名称空间的名字冲突
        from spam import money as m

        from spam import money,read1,read2,change

        from spam import * #*包含除了下划线开头以外所有的名字

        可以使用__all__来控制*

        __all__=['money','read1'] #这样在另外一个文件中用from spam import *就这能导入列表中规定的两个名字

5、一个python文件的两种用途

      1、当做脚本执行:__name__ == '__main__'
      2、当做模块被导入使用:__name__ == '模块名'
        if __name__ == '__main__':
            pass

6、模块的搜索路径
内存----》内置模块-----》sys.path

1、什么是包
    包就是一个包含了__init__.py文件的文件夹(可以往该文件夹下放一堆子模块)

2、包的使用
    注意:但凡是在导入时,出现.,这是导入包才有的语法,.的左边必须是一个包,使用的时候没有这种限制

     包只是模块的一种形式而已,包的本质就是一种模块
import os
import logging.config

BASE_DIR=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
LOG_PATH=os.path.join(BASE_DIR,'log','access.log')
COLLECT_PATH=os.path.join(BASE_DIR,'log','collect.log')

#定义三种日志输出格式 开始
standard_fORMat = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]'

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'

#log配置字典
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
        'id_simple' : {
            'format' : id_simple_format
        },
    },
    'filters': {},
    'handlers': {
        #打印到终端的日志
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': LOG_PATH,  # 日志文件
            'maxBytes': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
        'collect': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'simple',
            'filename': COLLECT_PATH,  # 日志文件
            'maxBytes': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        '': {
            'handlers': ['default', 'console','collect'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': False,  # 向上(更高level的logger)传递
        },
    },
}

from conf import settings
import logging.config

def logger_handle(log_name):
    logging.config.dictConfig(settings.LOGGING_DIC)  # 导入上面定义的logging配置
    logger = logging.getLogger(log_name)  # 生成一个log实例
    return logger

log_msg = 'eGon给alex转了1毛钱'
#调用日志功能记录日志
#common.logger(log_msg)
logger = common.logger_handle('转账')
logger.debug(log_msg)

Python Day5

Http://www.cnblogs.com/linhaifeng/articles/6384466.html#_label13

重复:.|?|*|+|{m,n}|.*|.*?
.代表任意一个字符
print(re.findall('a.b','a1b a b a-b aaaaaab'))
                      a.b
print(re.findall('a.b','a1b a b a\nb a-b aaaaaab',re.DOTALL))
                      a.b

?:代表?号左边的字符出现0次或者1
print(re.findall('ab?','a ab abb abbbb a1b')) #['a','ab','ab','ab','a']
                      #                  ab?

*:代表*号左边的字符出现0次或者无穷次
print(re.findall('ab*','a ab abb abbbb a1b')) #['a','ab','abb','abbbb','a']
                                       ab*

+:代表+号左边的字符出现1次或者无穷次
print(re.findall('ab+','a ab abb abbbb a1b')) #['ab','abb','abbbb']
                      #                  ab+

{m,n}:代表左边的字符出现m次到n次
print(re.findall('ab{0,1}','a ab abb abbbb a1b')) #['ab','abb','abbbb']
print(re.findall('ab?','a ab abb abbbb a1b')) #['ab','abb','abbbb']

print(re.findall('ab{0,}','a ab abb abbbb a1b')) #['ab','abb','abbbb']
print(re.findall('ab*','a ab abb abbbb a1b')) #['ab','abb','abbbb']

print(re.findall('ab{1,}','a ab abb abbbb a1b')) #['ab','abb','abbbb']
print(re.findall('ab+','a ab abb abbbb a1b')) #['ab','abb','abbbb']

print(re.findall('ab{2,4}','a ab abb abbbb a1b')) #['abb', 'abbbb']

.*:贪婪匹配
print(re.findall('a.*b','xxxy123a123b456b'))
                               a.*b
.*?:非贪婪匹配
print(re.findall('a.*?b','xxxy123a123b456b'))

|:或者
print(re.findall('compan(y|iess)','too many companiess have gone bankrupt, and the next one is my company'))
print(re.findall('compan(?:y|iess)','too many companiess have gone bankrupt, and the next one is my company'))
                                                                        #compan(y|iess)

print(re.findall('href="(.*?)"','<a href="http://www.baidu.com">点击我</a>'))

#在Python中,通常有这几种方式来表示时间:
#1、时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型
#2、格式化的时间字符串(Format String)
#3、结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)

import time
#时间戳

print(time.time())
1515724610.869189

#格式化的时间字符串

print(time.strftime("%Y-%m-%d %X"))
2018-01-12 10:42:21

#结构化时间

print(time.localtime()) #本地时区的struct_time
#年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=10, tm_min=50, tm_sec=49, tm_wday=4, tm_yday=12, tm_isdst=0)
print(time.gmtime())  #UTC时区的struct_time
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=2, tm_min=50, tm_sec=49, tm_wday=4, tm_yday=12, tm_isdst=0)

#其中计算机认识的时间只能是'时间戳'格式
#于是有了下图的转换关系
Python Day5

#将一个时间戳转换为当前时区的struct_time

res1=time.time()
res2=(time.localtime(res1))
print(res2)
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=12, tm_hour=11, tm_min=18, tm_sec=52, tm_wday=4, tm_yday=12, tm_isdst=0)

#再转换为结构化时间

print(time.strftime("%Y-%m-%d %X", res2))
2018-01-12 11:19:48

#datetime模块
import datetime

print(datetime.datetime.now())
2018-01-12 11:26:47.797132
print(datetime.date.fromtimestamp(time.time()))
2018-01-12
print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分

--结束END--

本文标题: Python Day5

本文链接: https://www.lsjlt.com/news/185253.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python Day5
    1、什么是模块最常见的场景,一个模块就是包含了一组功能的python文件,例如module.py,模块名是module可以使用import module,四个通用类别:   1 使用python编写的.py文件   2 ...
    99+
    2023-01-31
    Python
  • python之路day5
    subprocess模块 铺垫:1、os模块os模块中的system,使用os.system("dir")可直接输出结果,如果将os.system("dir")赋值给一个变量,则这个变量接收的是这个命令执行成功与否,如果非0则执行不成功,0...
    99+
    2023-01-31
    之路 python
  • Day5-python中的模块与包
    1.什么是模块 最常见的场景,一个模块就是包含一组功能的python文件,例如module.py,模块名是module 可以使用import module,四个通用类别: 1、使用pytho...
    99+
    2023-01-31
    模块 python
  • 【100天精通python】Day5:python基础_python 基本语句,流程控制语句
    目录 1. 条件语句 1.1 if语句 1.2 if-else语句  1.3  if-elif-else语句 2 循环语句 2.1 for循环 2.2 while循环: 3  跳转语句 3.1 break语句 3.2 continue语句 ...
    99+
    2023-08-31
    python 开发语言
  • [Python] python-docx
    [目的] 使用Python编辑Micorsoft Word 文档 [测试环境]         OS: MS XP professional SP3 Win32         Python:2.6.6 [准备]       ...
    99+
    2023-01-31
    Python python docx
  • Python: kafka-python
    背景 我们有个数据处理平台,有两个用 docker 运行的数据处理模块,分别是:data_api, 和 processor_api,故名思义: data_api: 接受数据; processor_api: 处理数据; 数据处理简单...
    99+
    2023-01-31
    Python kafka python
  • [Python]linux python
     #!/usr/bin/env python与#!/usr/bin/python的区别 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它,就这么简单   #!/usr/bin/python是告诉操作系统执行...
    99+
    2023-01-31
    Python linux python
  • python------用python写
    这样一个小游戏,我们用shell也是可以完成的,但是这里我们主要是练习python!具体的要求及shell的写法http://zidingyi.blog.51cto.com/10735263/1767566!#!/usr/bin/env p...
    99+
    2023-01-31
    python
  • python python-docx 替
    最根本的参考当然还是官方的文档,相当不错的中文讲解。 有人已经做了如何修改一些格式的博客:用python-docx修改已存在的Word文档的表格的字体格式。 我这里给出替换内容给的例子,简单来说,就是使用一个函数.clear(...
    99+
    2023-01-31
    python docx
  • python-初识python
     一.计算机的初步认识     硬件:内存,主板,CPU,硬盘,显卡,显示器等   内存:     优点:存取速度快     缺点:断电后数据会全部丢失   硬盘:     优点:断电后数据也会永久保存     缺点:存取速度远远慢于内...
    99+
    2023-01-31
    python
  • Python之——python-nmap
    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/78995578 一、python-nmap安装 # yum -y install nmap #安装nmap工具 # ...
    99+
    2023-01-31
    Python python nmap
  • 【Python】Python-pool的
    收集了几个python种进程池pool的使用例子,改写为py3版本。1. pool.apply_async进程非阻塞执行,输入不确定情况下用默认情况下,Pool会创建固定数目的工作进程,并向这些工作进程传递作业,直到再没有更多作业为止。当...
    99+
    2023-01-31
    Python pool
  • 【python】IDLE与python(
    这个是idle:这个是Python (command line):idle是GUI形式,command line是命令提示符形式,都是和Python解释器交互的手段。Module Docs模块手册意思是Python各种模块的说明书 ...
    99+
    2023-01-31
    python IDLE
  • Python 2.7 和 Python
    Python 2 发布于 2000 年年底,意味着较之先前版本,这是一种更加清晰和更具包容性的语言开发过程。而先前版本的 Python 应用的是 PEP (Python 增强协议),这种技术规范能向 Python 社区成员提供信息或描...
    99+
    2023-01-31
    Python
  • Python流处理Python
    Faust是一个流处理库,将kafka流中的思想移植到Python中。 它被用于Robinhood去构建高性能的分布式系统和实时数据通道,每天处理数十亿的数据。 Faust同时提供流处理和事件处理,同类型的工具分享例如:Kafka St...
    99+
    2023-01-31
    Python
  • python(一):python与jav
    1、变量      java中定义变量,int  a=0;而python中为 a=0;由此可见java要事先申明数据类型,python中无需事先申明数据类型,拿来就可以用,Python 的语法要比Java 更灵活。2、分号    java的...
    99+
    2023-01-31
    python jav
  • Python 使用python-kafk
    使用python-kafka类库开发kafka生产者&消费者&客户端   By: 授客 QQ:1033553122       1.测试环境 python 3.4   zookeeper-3.4.13.tar.gz 下载地...
    99+
    2023-01-30
    Python python kafk
  • python通过python-gitla
    我的gitlab API版本是Gitlab API  V4,运行的界面如下代码如下:#/usr/bin/python#coding=utf-8import gitlabplist = ''def allprojects():    ####...
    99+
    2023-01-31
    python gitla
  • 【Python】Ceph的python接
    参考文章 ceph的python_api文档 连接ceph集群 import rados cluster = rados.Rados(conffile='/etc/ceph/ceph.conf') cluster.conn...
    99+
    2023-01-31
    Python Ceph python
  • Python学习:Python form
    从Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。 相对基本格式化输出采用‘%’的方法,format()功能更强大,该...
    99+
    2023-01-31
    Python form
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作