一.昨日内容回顾 1.钻石继承 #新式类,本身或父类显示继承object #找名字的时候是广度优先顺序 #有mro方法,super方法, # super并不是单纯的找父类,和mro顺序是完全对应的 # super class A: def func(self): print('A') class B(A): def func(self): print('B') super().func() class C(A): def func(self): print('C') super().func()…
本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve configparser hashlib 一.模块介绍 模块的定义:在python中一个.py文件我们就可以称之为一个模块,python中有很多自带的模块我们叫内置模块,而我们自己创建的模块称之为自定义模块.模块可以被别的程序引入,以使用该模块中的函数等功能 模块的导入: # 方法一: # import time # 方法二: from time imp…
加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值. 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. HASH主要用于信息安全领域中加密算法,他把一…
日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level). 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状…
1.昨日内容回顾 1.正则表达式     # 正则表达式 —— str           # 检测字符串是否符合要求     # 从大段的文字中找到符合要求的内容 1).元字符 #. # 匹配除换行符以外的所有字符 # \n,\t,\b # \w,\s,\d    \W,\S,\D    # ^,$ # ab|a,()   #  [...],[^...] 2).量词 # * # + # ? # {n} # {n,} # {n,m} 3).贪婪匹配和惰性匹配      .*?x  惰性匹配 4)…
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug()调试, info()记录, warning()有潜在问题, error()出问题 and critical()严重问题5个级别,下面我们看一下怎么用. 最简单用法 import logging logging.warning("user [alex] attempte…
我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python2有os.system, >>> os.system('uname -a') Darwin Alexs-MacBook-Pro.local 15.6.0 Darwin Kernel Version 15.6.0: Sun Jun 4 21:43:07 PDT 2017; root:xnu-3…
目录基本内容 log  #日志目录 conf  #配置目录 core/luffycity  #程序核心代码目录  #luffycity 是项目名,建议用小写 libs/modules  #内置模块 docs  #文件 README  #软件使用说明 setup.py  #安装文件 bin/  #程序启动脚本,程序入口脚本 luffy_server.py  #通过这个文件去调用其他文件夹里的东西 目录组织方式 假设你的项目名为foo, 我比较建议的最方便快捷目录结构这样就足够了: Foo/ |--…
昨日内容回顾 1.app播放音乐 plus.audio.createPlayer(文件路径/URL) player.play() 播放音乐 player.pause() 暂停播放 player.resume() 继续播放 player.stop() 停止播放,清空player对象 # 当停止之后,无法在使用play() resume()继续播放 2.app遥控玩具播放内容 Websocket通讯 实现手机遥控app app:{content_id:123,to_user:123456} {mus…
本节大纲: 模块介绍 time &datetime模块 random os sys shutil shelve xml处理 pyyaml处理 configparser hashlib re正则表达式 1.模块介绍 1)定义: 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,模块名就是:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2)导入方法: imp…
编码的问题 中文版 Windows 终端是默认GBK编码格式,python2默认为ASCII编码,虽然我们注释了需要用UTF-8,但是通过命令行运行的文件如果print中文内容还是会出现乱码. Unicode, UFT-8, GBK 分别是三种不同的编码,Unicode在转为UTF-8或GBK时需要经过编码的过程,而UTF-8或GBK变为Unicode则需要经过解码.因此UTF-8和GBK的转化就需要经过一个解码和编码的过程.所以即使我们在py文档里注明了使用utf-8编码,在默认使用gbk的终…
正则表达式就是字符串的匹配规则,在多数编程语言里都有相应的支持,python里对应的模块是 re. re的匹配语法有以下几种 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split 以匹配到的字符当做列表分隔符 re.sub 匹配字符并替换 re.fullmatch 全部匹配  常用的表达式规则   红色加粗的为重要的常用的 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字…
相比于time模块,datetime模块的接口则更直观,更容易调用. datetime模块定义了下面这几个类: datetime.date:表示日期的类,常用的属性有year,month,day: datetime.time:表示时间的类,常用的属性有hour,minute,second,microsecond: datetime.datetime:表示日期时间. datetime.timedelta:表示时间间隔,即两个时间点之间的长度. datetime.tzinfo:与时区有关的相关信息.…
lambda表达式 lambda表达式是函数的一种简化,如下面两种函数定义方法,实际上效果是一样的. 使用lambda表达式的函数,func2是函数名,lambda: 后面的123 即为返回值. def func1(): return 123 result1 = func1() print(result1) # 正常定义一个函数 => 123 func2 = lambda: 123 result2 = func2() print(result2) # 使用lambda定义函数,效果同上 =>…
定义一个函数 def function_name(形式参数): 代码块 return 'Value' #如果没有写return,则默认返回None # 一个函数到return这一行就结束执行了,在return后面写的东西不执行 function_name(实际参数)  # 只有call这个函数的时候才会执行函数里面的代码 函数把功能提取了出来,提高效率减少代码量 定义函数的时候,参数可以有不止一个,可以是普通参数,默认参数,动态参数.默认参数放在普通参数后面,动态参数放在最后面. 输入实际参数的…
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml. xml的格式如下,就是通过<>节点来区别数据结构的: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank upda…
把内存数据转成字符,叫序列化:把字符转成内存数据类型,叫反序列化. Json模块 Json模块提供了四个功能:序列化:dumps.dump:反序列化:loads.load. import json data = { 'roles':[ {'role':'monster','type':'pig','life':50}, {'role':'hero','type':'关羽','life':80} ] } #dumps和loads d = json.dumps(data) #仅转成字符串 d2 =…
高级的 文件.文件包.压缩包 处理模块   参考Python之路[第四篇]:模块     #src是原文件名,fdst是新文件名 shutil.copyfileobj(fsrc, fdst[, length])   #将文件内容拷贝到另一个文件中 import shutil #后面是新创建的文件,每次读len的长度,直到读完 shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'),len) shutil.copyfile(src,…
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python里,一个 .py 文件就被称之为一个模块(Module). 使用模块有什么好处? 1.最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.带一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,…
当你的模块文件越来越多,就需要对模块文件进行划分,比如把负责跟数据库交互的都放一个文件夹,把与页面交互相互的放入一个文件夹. 像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包. 那不同包之间的模块如何相互导入呢? crm/views.py 内容 def sayhi(): print('hello world!') 通过 manage.py 调用 from my_pro.crm import views #从包里导入包里的文件 views.sayhi() 在文件夹下,加一个 __ini…
os模块提供了很多允许你的程序和操作系统直接交互的功能 得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd() #test.py import os print(os.getcwd()) D:\ProgramLearning>python Py_program\test.py D:\ProgramLearning #显示的是当前python解释器所在的目录,而不是文件所在目录 返回指定目录下的所有文件和目录名:os.listdir() #test.py import os…
sys.argv  命令行参数 List,第一个元素是程序本身路径 #test.py import sys print(sys.argv) D:\ProgramLearning\Py_program>python test.py ['test.py'] D:\ProgramLearning\Py_program>python test.py run web ['test.py', 'run', 'web'] sys.exit(n)  退出程序,正常退出时 exit(0) >>>…
递归 引入 递归的表现形式 下面是四个函数,互相调用返回结果 # 引入 递归的表现形式 def f1(): ' def f2(): r = f1() return r def f3(): r = f2() return r def f4(): r = f3() return r result = f4() print(result) # 最后输出结果 1 除了依次调用其他函数,函数也可以调用自己 下面的f1()函数一直在调用自己,相当于一个死循环,python内部有机制,当递归调用到一定数量的时…
文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r:  只读模式(默认) w: 只写模式 (不可读,文件不存在就创建,存在则清空) x:  只写模式 (不可读,文件不存在就创建,存在则报错) a:  追加模式 (不可读,如果文件不存在就创建,如果存在则在原文件后面追加) 以上都是以字符串方式打开 '+' 表示可以同时读写某个文件 'b' 表示以字节的方式操作 -> 后续socket部分会…
Set 集合 set - unordered collections of unique elements 创建一个set/一个空set # create a new set set1 = {1,2,3} print(type(set1)) # result => <class 'set> set2 = set() print(type(set2)) # create an empty set, result => <class 'set'> # as the obje…
time 模块的方法 time.time():返回当前时间的时间戳. >>> import time >>> time.time() #从1974年到现在过去了多少微秒 1551695952.625551 time.localtime([secs]):  将一个时间戳转换为当前时区的 struc_time ,secs 参数未提供,则以当前时间为准. >>> time.localtime() #获取当地时间 time.struct_time(tm_yea…
程序中有很多地方需要用到随机字符,比如登陆网站的随机验证码,通过random模块可以很容易生成随机字符串. >>> import random >>> random.randint(1,100) #在1-100之间生成一个随机数 3 >>> random.randrange(1,100) #在1-99之间生成一个随机数 10 >>> random.random() #返回一个浮点数 0.9143138919444751 >>…
#!/usr/bin/env python # -*- coding;utf-8 -*- import configparser # 创建对象 conn = configparser.ConfigParser() # conn对象具有read功能,打开文件读取文件,放入内存,要保存必须重写 conn.read("ini", encoding="utf-8") # conn对象的sections作用:在内存中寻找所有的[???] result = conn.secti…
给出一个列表,进行冒泡排序 原理算法: li = [52, 37, 23, 11, 3, 1, ] print(li) # 每次循环,进行一次排序,列表内数字两两比较,最大的数字排到最末尾 # 一共循环len(li) - 1 次 for i in range(len(li) - 1): if li[i] > li[i + 1]: temp = li[i] li[i] = li[i+1] li[i + 1] = temp print(li) for i in range(len(li) - 2):…
python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 import os j = os.getcwd() # 返回当前python所在路径,在哪里执行python,返回哪里目录 print(j) C:\Users\57098\PycharmProjects\untitled\python学习第二模块\第四章\常用模块 import os # 导入os 模块 os…