摘要: 1044, "Access denied for user 'root'@'192.168.0.%' to database 'test'" 是因为创建这个test数据库时候没有给这个数据库授予被操作权限,所以报错,授权即可 解决: grant all privileges on test.* TO 'root'@'%' identified by 'jenkins@123' with g... 阅读全文
posted @ 2019-02-16 22:14 effortsing 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 数据存储 处理JSON格式的数据 JSON字符串与字典相互转换 将字典转换为JSON字符串需要使用json模块的dumps函数。将JSON字符串转换为字典有下面两种方式 (1)使用json模块的loads函数,该函数通过参数传入JSON字符串,然后返回与该JSON字符串对应的字典(推荐) (2)使用eval函数将字典转换为JSON字符串(不建议用这种方式) 尽管eval函数与load... 阅读全文
posted @ 2019-02-16 18:01 effortsing 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 常用的正则表达式: Email:'[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-zA-Z]{2,3}' IP地址:'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' Web地址:'https?:/{2}\w.+' import re # 匹配email的正则表达式 email='[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[a-zA-Z]{... 阅读全文
posted @ 2019-02-16 17:10 effortsing 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 特殊成员方法 除了构造方法(__init__),还可以使用如下4个特殊方法定义自己的序列类,就像列表、字典等序列一样,只不过用自己特殊的行为,所有的特殊方法在名称前后需要加(__) __len__(self): __getitem__(self,key): __setitem__(self,key,value): __delitem__(self,key) 阅读全文
posted @ 2019-02-16 16:35 effortsing 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 使用super函数----增量重写普通方法和构造方法 在子类中如果重写了超类的方法,通常需要在子类方法中调用超类的同名方法,也就是说,重写超类的方法,实际上应该是一种增量的重写方式,子类方法会在超类的同名方法的基础上 做一些其他的工作。 如果在子类中要访问超类中的方法,需要使用super函数。该函数返回的对象代表超类对象,所以访问super函数返回的对象中的资源都属于超类。super函数可... 阅读全文
posted @ 2019-02-16 16:29 effortsing 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 重写普通方法和构造方法 在类的继承中,当B类继承A类时,B类就会拥有A类的所有成员变量和方法,如果B类中的方法名与A类中的方法名相同,那么B类中同方法名就会重写A类中同方法名。 如果在B类中定义了构造方法,同样也会重写A类中的构造方法,也就是说,创建B类对象,实际上是调用B类中的构造方法,而不是A类中的构造方法。 实例 class A: def __init__(self): ... 阅读全文
posted @ 2019-02-16 16:05 effortsing 阅读(377) 评论(0) 推荐(0) 编辑
摘要: Python的数据类型与数据结构 数据类型分为: 整数型 ;数字的整数 浮点型; 数字带小数 字符串; 用 ‘’ 或者 “” 引用的任意文本 布尔型;只有 True 和 False 数据结构分为: 列表 list 元祖 tuple 字典 dict 集合 set 阅读全文
posted @ 2019-02-16 15:17 effortsing 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 类 创建类 #创建一个Person类 class Person: #定义setName方法 def setName(self,name): self.name=name #定义getName方法 def getName(self): return self.name # 定义greet方法 def greet(s... 阅读全文
posted @ 2019-02-16 15:11 effortsing 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 生产者-消费者问题与quene模块 下面使用线程锁以及队列来模拟一个典型的案例:生产者-消费者模型。在这个场景下,商品或服务的生产者生产商品,然后将其放到类似队列的数据结构中,生产商品的时间是不确定的, 同样消费者消费生产者的商品的时间也是不确定的。 这里使用quene模块来提供线程间通信的机制,也就是说,生产者和消费者共享一个队列。生产者生产商品后,会将商品添加到队列中。消费者消费商品,... 阅读全文
posted @ 2019-02-16 14:30 effortsing 阅读(252) 评论(0) 推荐(0) 编辑
摘要: python参数 关键字参数和默认值 默认值又叫位置参数 下面实例中 ("李宁") 是位置参数,(greeting="hello") 是关键字参数 实例 def greet(name,greeting): return "问候语:{} 姓名:{}".format(greeting,name) print(greet("李宁",greeting="hello")) E:\py... 阅读全文
posted @ 2019-02-16 13:51 effortsing 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 生成器 如果说迭代器是以类为基础的单位产生器,那么生成器(generator)就是以函数为基础的单位产生器。也就是说,迭代器和生成器都是一个值一个值得生产,每迭代一次,只能得到一个值, 所不同的是,迭代器需要在类中定义__iter__和__next__方法,在使用时需要创建迭代器的实例。而生成器是通过一个函数展现的,可以直接调用, 所以从某种意义上来说,生成器在使用上更简洁。 创建称生... 阅读全文
posted @ 2019-02-16 12:55 effortsing 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 迭代器和生成器的区别 如果说迭代器是以类为基础的单位产生器,那么生成器(generator)就是以函数为基础的单位产生器。也就是说,迭代器和生成器都是一个值一个值得生产,每迭代一次,只能得到一个值, 所不同的是,迭代器需要在类中定义__iter__和__next__方法,在使用时需要创建迭代器的实例。而生成器是通过一个函数展现的,可以直接调用, 所以从某种意义上来说,生成器在使用上更简洁。... 阅读全文
posted @ 2019-02-16 12:55 effortsing 阅读(1378) 评论(0) 推荐(0) 编辑
摘要: 迭代器 为什么要用迭代器 为什么不使用列表而使用迭代器,列表可以获取列表长度,然后使用变量i对列表索引进行循环,而且容器理解,也可以获取集合的所有元素。 没错,使用列表的代码是容易理解也很好操作,但这是要付出代价的。列表之所以可以用索引来快速定位其中的任何一个元素,是因为列表是一下子将所有的数据都装在在内存中, 而且是一块连续存在的空间。当数量比较小时,实现比较容易;当数据量大时,会非常... 阅读全文
posted @ 2019-02-16 12:54 effortsing 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 异常处理 什么是异常 当遇到错误后,会引发异常。如果异常对象没有处理异常,或未步捕捉异常,程序就会终止执行,并向用户返回异常信息。通常异常信息会告知错误的代码行以及其他有助于定位 错误的信息,以便程序员可以快速定位有错误的代码 主动抛出异常 raise Exception 实例: raise Exception("这是自己主动抛出的一个异常") 捕捉异常 如果异常未捕捉,... 阅读全文
posted @ 2019-02-16 11:21 effortsing 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 测试 使用Flak8检测python代码的错误和警告 pip install flake8 flake8 test.py 实例: [root@test3 ~]# flake8 test.py test.py:4:1: E302 expected 2 blank lines, found 1 test.py:9:1: E302 expected 2 blank lines, found... 阅读全文
posted @ 2019-02-16 11:20 effortsing 阅读(166) 评论(0) 推荐(0) 编辑
摘要: python多线程使用场景 如果程序时cpu密集型的,使用python的多线程是无法提升效率的,如果程序时IO密集型的,使用python多线程可以提高程序的整体效率 CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存), I/O在很短... 阅读全文
posted @ 2019-02-16 11:16 effortsing 阅读(1792) 评论(0) 推荐(0) 编辑
摘要: CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存), I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。 IO密集型(I/O bound) IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,... 阅读全文
posted @ 2019-02-16 11:15 effortsing 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 实例:#定义一个生成器 def mygGenerator(): numList=[1,2,3,4,5,6,7,8] for num in numList: #yield 语句会冻结当前函数,并提交当前要生成的值(本例是num) yield num #对迭代器进行迭代 for num in mygGenerator(): print(... 阅读全文
posted @ 2019-02-16 11:05 effortsing 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 1、python多线程 多线程可以把空闲时间利用起来 比如有两个进程函数 func1、func2,func1函数里使用sleep休眠一定时间,如果使用单线程调用这两个函数,那么会顺序执行这两个函数 也就是直到第一个函数执行完后,才会执行第二个函数,这样需要很长时间; 如果使用多线程,会发现这两个函数是同时执行的,这是因为多线程会把空闲的时间利用起来,在第一个函数休眠的函数就开始执行第二个... 阅读全文
posted @ 2019-02-16 09:12 effortsing 阅读(376) 评论(0) 推荐(0) 编辑