# =============================操作系统模块=======================
# import os
# 待续
# ==============================解释器模块========================
# import sys
# 待续
# ===============================加密============================
# import hashlib
#
# m = hashlib.md5()
# m.update("HelloWorld".encode("utf8"))
# print(m.hexdigest())
#
# s = hashlib.sha256()
# s.update("HelloWorld".encode("utf8"))
# print(s.hexdigest()) # ======================日志=====================
import logging
# 日志配置
# logging.basicConfig(level=logging.DEBUG,
# format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
# datefmt='%a,%d %b %Y %H:%M:%S',
# filename='test.log',
# filemode='a')
#
# logging.debug("degub message")
# logging.info("info message")
# logging.warning("warning message")
# logging.error("error message")
# logging.critical("critical message") # 日志函数处理日志
# logging.basicConfig(level=logging.DEBUG)
# logger = logging.getLogger()
# #创建一个handler 用于写入日志文件
# fh = logging.FileHandler('test.log')
# #在创建一个handler,用于输出到控制台
# ch = logging.StreamHandler()
#
# formamtter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
#
# fh.setFormatter(formamtter)
# ch.setFormatter(formamtter)
#
# logger.addHandler(fh)
# logger.addHandler(ch)
#
# logger.debug("degub message")
# logger.info("info message")
# logger.warning("warning message")
# logger.error("error message")
# logger.critical("critical message") # ===========================生成和修改常见配置文档==================
# import configparser
#
# config = configparser.ConfigParser()
# 创建配置文件 example.ini ,写入数据
# config['DEFAULT']={'ServerAliveInterval':'45',
# 'Compression':'yes',
# 'CompressionLevel':'9'}
# config['bitbucket.org']={}
# config['bitbucket.org']['User']='hg'
#
# with open('example.ini','w') as configfile:
# config.write(configfile)
# 读取配置文件得数据
# config.read('example.ini')
# print(config.sections())
# print(config.defaults())
# 判断数据是否在配置文件中
# print('bitbucket.org' in config)
# print('bitbucke' in config)
# 单独取值
# print(config['bitbucket.org']['user'])
# 循环取值
# for key in config['bitbucket.org']:
# print(key) # 还默认打印Default里面得东西
# 复制粘贴
# config.remove_section('topsecret.server.com')#删除块
# config.remove_option('bitbucket.org','user') # 删除模块下的键值对
# config.write(open('example.ini','w'))
# 修改
# config.set('bitbucket.org','user','alex') # =======================匹配与正则表达式===========================
# string提供的方法是完全匹配
# s = 'hello world'
# print(s.find('llo'))
# ret = s.replace('ll','xx')
# print(ret)
# print(s.split(' '))
# print(s.split('w'))
# 正则表达式提供的方法是模糊匹配
# 字符匹配(普通字符,元字符):
# 普通字符:大多数的字符和字母都会和自身匹配
# 2元字符: . ^ $ * + ? { } [ ] | ( ) \
# import re
# ---------- . : 通配符 -------------
# res =re.findall('w\w{2}l','hello world') # 匹配的内容
# res = re.findall('alex','adfsfsdkljblldfsdf')
# res = re.findall('w..l','hello world') # . 代之所有的一个字符除了换行符
# res = re.findall('w.l','hello w \nld')
# --------- ^ : 尖角符 ----------------
# res = re.findall('^h...o','hjasdhello') # ^ 开头匹配
# --------- $ : dollar符 -----------------
# res = re.findall('a..x$','sdfsalex') # $ 结尾匹配
# --------- * :星符 ---------------
# res = re.findall('a.*li','fsdfsfasdfsfsdlisdfsdfse') # 重复匹配[0,+oo]
# --------- + : 加号符 --------------
# res = re.findall('b+','kajsfbhbbb') # 匹配[1,+oo]个前面的字符
# --------- ? :问好符 -------------
# res = re.findall('ab?','adfsfab') # 匹配[0,1]个前面的字符
# --------- { } :大括号符 ------------
# res = re.findall('a{5}b','aaaaabaaab') # 匹配指定次数的字符
# res = re.findall('a{1,3}b','abaabaaabaaaab') # 匹配指定范围数的字符
# --------- [ ] :中括号符(字符集) ------------
# res = re.findall('a[c,b]x','acx') # 字符集合 或者的关系,只能选一种
# res = re.findall('a[a-z]x','azx') # [a-z] :a,b,c,d...x,y,z
# res = re.findall('a[.*|]x','adbsa|xsda.xfa*xdfsf') # 取消元字符的特殊功能除了(\ ^ -)
# res = re.findall('[1-9,a-z,A-Z]','12tyAS') #全部匹配
# res = re.findall('[1-9a-zA-Z]','12tyAS') #全部匹配
# res = re.findall('[^t]','12tyAS') # ^ 在 []中求反
# res = re.findall('[^iu]','iusdfsfsdf') # ^ 在 [] 中非的意思
# --------- | : 管道符 ------------
# res = re.search('(as)|3','3asf3').group() # 管道符是或的意思
# --------- ( ) : 括号符 -----------
# res = re.search('(as)+','sdfsasas').group() # 括号是分组
# res = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weew34ttt123/ooo')
# res = re.findall('www.(?:\w+).com','www.baidu.com') # ?: 取消组的优先级
# --------- \ : 斜杠符 -----------
# 反斜杠后边跟元字符去除特殊功能
# 反斜杠后面跟普通字符实现特殊功能
# \d 匹配任意十进制数 [0-9]
# \D 匹配任意非数字字符 [^0-9]
# \s 匹配任意空白字符 [\t\n\r\f\v]
# \S 匹配任意非空白字符 [^\t\n\r\f\v]
# \w 匹配任意字母数字符 [a-zA-Z0-9]
# \W 匹配任意非字母数字符 [^a-zA-Z0-9]
# \b 匹配一个特殊字符边界,也就是指单词和空格间的位置 # -----------------------------------------
# 结论: * 等价于{0,正无穷} + 等价于{1,正无穷} ? 等价于{0,1}
# ----------------------------------------- # -----------------正则表达式的方法-------------
# re.findall() #返回满足条件的所有结果到一个列表里
# re.fullmatch() #全模式匹配
# re.finditer() #返回匹配结果的迭代器
# re.search() # 匹配返回满足条件的第一个结果可以调用group()返回结果
# re.match() #只在字符串开始匹配
# re.split() # 分割
# re.sub() # 替换
# re.subn() # 替换
# obj = re.compile('.com') # 编译成正则对象
# print(res.group())
# print(res.group('id'))
# print(res.group('name'))
# print(res) # ========================模块============================
# 一个.py文件就为一个模块
# import calculate
# import sys
# print(sys.path)
# print(sys.platform)
# print(calculate.add(1,2,3,4,5)) # ======================JSON 或者 Pickle 或者 shelve=============================
# import json # dt = {'12':'asdf'}
# data = json.dumps(dt)
# with open('18.txt','w') as fd:
# fd.write(data) # with open('18.txt','r') as fd:
# data = fd.read()
# data = json.loads(data)
# print(data)
# print(type(data)) # import pickle
# def foo():
# print("ok")
# data = pickle.dumps(foo)
# with open('18.txt','wb') as fd:
# fd.write(data) # with open('18.txt','rb') as fd:
# data = fd.read()
# data = pickle.loads(data)
# print(type(data))
# print(data)
# data() # import shelve
# f = shelve.open('19.txt')
# f['info'] = {'name':'alex','age':'18'}
# print(f.get('info')['name']) # d = {'name':'alex','age':'18'}
# print(d.get('sex','male')) # class F1:
# def __init__(self):
# self.name = 123
# print('F1',self.name)
# class F2:
# def __init__(self,a):
# self.ff = a
# print('F2',self.ff.name)
#
# class F3:
# def __init__(self,b):
# self.dd = b
# print('F3',self.dd.ff.name)
# f = F1()
# f2 = F2(f)
# f3 = F3(f2) # =========================执行命令其他进程并返回值====================================
# import subprocess
#
# obj = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE) #将子进程转移到主进程
# print(obj)
# print(obj.stdout)
# print(str(obj.stdout.read(),'gbk')) # ==========================字符编码=================================
# str : unicode
# bytes : 16进制 # ===========================线程进程模块=============================
# ---------------- 普通锁 --------------------
# import time
# import threading
# begin = time.time()
# def foo():
# print('foo')
# time.sleep(1)
# def bar():
# print('bar')
# time.sleep(2)
# t1 = threading.Thread(target=foo)
# t2 = threading.Thread(target=bar)
# t1.start()
# t2.start()
# end = time.time()
# print(end-begin) # from time import sleep,ctime
# import threading
#
# num = 1000
# def foo():
# global num
# r.acquire()
# num -= 1
# sleep(0.1)
# r.release()
#
#
# def main():
# begin = ctime()
# print(begin)
# threadList = []
# for i in range(100):
# t=threading.Thread(target=foo())
# threadList.append(t)
# for i in threadList:
# i.start()
# # for i in threadList:
# # i.join()
# end = ctime()
# print(num)
# print(end)
#
# if __name__ == '__main__':
# r = threading.Lock()
# main() # ------------------递归锁-------------------------------- # import threading
# import time
# class MyThread:
# def doA(self):
# rlock.acquire()
# print('A gets rlock')
# time.sleep(3)
# rlock.acquire()
# print('A gets rlock')
# time.sleep(1)
# rlock.release()
# rlock.release()
# def doB(self):
# rlock.acquire()
# print('B gets rlock')
# time.sleep(2)
# rlock.acquire()
# print('B gets rlock')
# time.sleep(2)
# rlock.release()
# rlock.release()
# def do(self):
# self.doA()
# self.doB()
#
# if __name__ == '__main__':
# # lockA = threading.Lock()
# # lockB = threading.Lock()
# rlock = threading.RLock()
# lockList = []
# for i in range(5):
# t = threading.Thread(target=MyThread().do())
# lockList.append(t)
# for i in lockList:
# i.start()
# for i in lockList:
# i.join()
# print('======end====') # -------------------信号量---------------------------- # import threading
# import time
#
# class MyThread(threading.Thread):
# def run(self):
# if semaphore.acquire():
# print(self.name)
# time.sleep(2)
# semaphore.release()
#
# if __name__ == '__main__':
# semaphore = threading.BoundedSemaphore(5)
# thrs = []
# for i in range(23):
# thrs.append(MyThread())
# for i in thrs:
# i.start() # -------------------------------条件变量------------------------------------ # import threading,time
# from random import randint
#
# class Producer(threading.Thread):
# def run(self):
# global L
# while True:
# val=randint(0,100)
# print('生产者',self.name,":Append"+str(val),L)
# if lock_con.acquire():
# L.append(val)
# lock_con.notify()
# lock_con.release()
# time.sleep(3)
# class Consumer(threading.Thread):
# def run(self):
# global L
# while True:
# lock_con.acquire()
# if len(L)==0:
# lock_con.wait()
# print('消费者',self.name,":Delete"+str(L[0]),L)
# del L[0]
# lock_con.release()
# time.sleep(0.25)
#
# if __name__=="__main__":
#
# L=[]
# lock_con=threading.Condition()
# threads=[]
# for i in range(5):
# threads.append(Producer())
# threads.append(Consumer())
# for t in threads:
# t.start()
# for t in threads:
# t.join()

Python学习历程之模块浅识的更多相关文章

  1. Python学习 Part4:模块

    Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...

  2. python学习之argparse模块

    python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...

  3. Python学习day19-常用模块之re模块

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. python学习之random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  6. Python学习笔记之模块与包

    一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...

  7. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  8. Python学习笔记1—模块

    模块的使用 引用模块的两种形式 形式一: import module_name 形式二: from module1 import module11   (module11是module的子模块) 例: ...

  9. Python学习笔记2——模块的发布

    1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件): """这是"nester.py"模块,提供了一个名为prin ...

随机推荐

  1. Android应用优化之代码检测优化

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  2. TLD算法

    TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了! ...

  3. href 与 src

    href:常用有两个标签<a>和<link> 1.<a href="http://www.w3school.com.cn">W3School&l ...

  4. 大白话理解this

    日常开发中,我们经常用到this.一开始常会用一种感觉去判断this的指向,当遇到复杂的函数调用时,就分不清this的指向. 今天我们来由浅入深来学习下. function family1(){ va ...

  5. 9) 十分钟学会android--使用Fragment建立动态UI

    为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用  ...

  6. 3) 十分钟学会android--建立第一个APP,建立简单的用户界面

    在本小节里,我们将学习如何用 XML 创建一个带有文本输入框和按钮的界面.下一节课将学会使 APP 对按钮做出响应——按钮被按下时,文本框里的内容被发送到另外一个 Activity. Android ...

  7. ubuntu+win10双系统,调整分区大小后进入了emergency mode

    问题背景: 装了Ubuntu+win10双系统,在Ubuntu下面挂载了Windows的D盘.后来因为D空间不够,进入Windows压缩C盘分区,扩大了D盘.重启后无法启动Ubuntu,进入了emer ...

  8. Struts2学习笔记 - Part.02

    ================Struts2的国际化================程序国际化: 程序可以根据极其所在的国家.语言环境,自动显示当前国家.语言的内容国际化的本质是:查找.替换国际化的 ...

  9. 【技术累积】【点】【java】【3】编译和反编译

    闲聊 擦,打脸了,但打完了还是得继续写呗,水着水着看呗. 概述 理解的不深入,但是实用. 总而言之:编译,是将书写的代码翻译为机器能够理解的代码:反编译,则是相反的过程. 来源在于语言的等级,一般认为 ...

  10. 应用二:Vue之ElementUI Form表单校验

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的)   表单校验是前端开发过程中最常用到的功能之一,根据个人的工作经验总结在此对表单校验功能的基 ...