Python学习之路
Python学习过程中问题,以及重要知识点记录。
leason00
工程师
展开
-
Python属性函数property
说明Python中的property被称为属性函数,它可以将类方法转换为只读属性,重新实现一个属性的setter和getter方法将类方法准换成只读属性正常情况下使用装饰器形式@property使用 如:class Test(object): def __init__(self, a, b): """Constructor""" self.a = a原创 2017-12-11 16:13:01 · 691 阅读 · 0 评论 -
Python文件操作os,shutil模块
说明os 模块提供了非常丰富的方法用来处理文件和目录常用OS模块方法OS模块os.getcwd() – 得到当前工作的目录os.remove() – 删除指定文件os.rmdir() – 删除指定目录(空目录)os.mkdir() – 创建目录os.makedirs() – 递归创建目录os.path.isfile() – 判断指定对象是否为文件。是返回True,否则Falseos.p原创 2017-12-08 14:14:55 · 854 阅读 · 0 评论 -
Python垃圾回收机制
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题。通过“分代回收”(generation collection)以空间换取时间来进一步提高垃圾回收的效率。一、引用计数在Python中,大多数对象的生命周期都是通过对象的转载 2017-11-17 11:11:10 · 611 阅读 · 0 评论 -
【python学习笔记】Python数据结构(列表,元组,字典,集合)
说明数据结构的概念很好理解,就是用来将数据组织在一起的结构。换句话说,数据结构是用来存储一系列关联数据的东西。在Python中有四种内建的数据结构,分别是List、Tuple、Dictionary以及Set。列表python里面用的最多最常用的数据类型,可以通过下标来访问,可以理解为java或者c里面的数组.但是功能比数组强大n倍,list可以放任意数量的python对象,可以是字符串,字符,整数,原创 2017-09-06 16:34:34 · 2780 阅读 · 0 评论 -
【python学习笔记】Python面向对象的理解(封装,继承,多态)
说明提到面向对象,总是离不开几个重要的术语:多态(Polymorphism),继承(Inheritance)和封装(Encapsulation)。Python也是一种支持OOP的动态语言,本文将简单阐述Python对面向对象的支持。在讨论Python的OOP之前,先看几个OOP术语的定义:类:对具有相同数据和方法的一组对象的描述或定义。对象:对象是一个类的实例。实例(instance):一个对原创 2017-09-06 16:46:56 · 8356 阅读 · 1 评论 -
【python学习笔记】Python自带特殊方法一览
python自带特殊方法原创 2017-09-09 11:41:05 · 1183 阅读 · 0 评论 -
【python学习笔记】Python装饰器
装饰器是什么意思一个大牛举的例子: 内裤可以用来遮羞,但是到了冬天它没法为我们防风御寒,聪明的人们发明了长裤,有了长裤后宝宝再也不冷了,装饰器就像我们这里说的长裤,在不影响内裤作用的前提下,给我们的身子提供了保暖的功效。装饰器本质上是Python函数,可以为已存在的对象添加额外的功能,同时装饰器还可以抽离出与函数无关的重用代码。具体应用场景如:插入日志、性能测试、事务处理、缓存、权限校验等。举个栗原创 2017-09-18 10:03:15 · 1868 阅读 · 0 评论 -
【python学习笔记】Python生成器yield
生成器(generator)生成器不会把结果保存在一个系列中,而是保存生成器的状态,在每次进行迭代时返回一个值,直到遇到StopIteration异常结束。生成器是可迭代对象,是惰性求值的,在需要的时候才产生结果,而不是立即产生结果。列表推导式产生的是一个列表,结果已经存在于内存之中了。可以减少内存消耗,提高代码可读性生成器函数example:生成自然数的平方yield生成器def a(N):原创 2017-09-18 10:04:26 · 1809 阅读 · 0 评论 -
【python学习笔记】Python反射机制
说明说到反射,让人熟知的eval函数,python除了这个函数,还有import() ,getattr、hasattr、setattr、delattr等方法eval函数class Test(object): def __init__(self): self.name = 'leason' def foo(self,name): self.name = n原创 2017-09-20 10:28:28 · 2253 阅读 · 0 评论 -
【python学习笔记】Python中*args 和**kwargs的用法
Python中*args 和**kwargs的用法说明python中默认缺省参数,参数名传参,可变长度传参。缺省参数def foo(a,b=8): print a,bfoo("leason") #leason 0foo("leason",88) #def 88参数名传参数def foo(a,b):原创 2017-09-20 14:16:37 · 10319 阅读 · 2 评论 -
【python学习笔记】Python异常处理raise、try...except、断言assert
说明写代码时,我们有时希望捕捉到程序异常但程序不退出,有时候不确定程序是否会异常,有时候希望自己定义异常,中断程序运行。异常处理raise使用raise抛出异常,一旦执行了raise语句,raise后面的语句将不能执行。try: s = None if s is None: print "s None" raise NameError原创 2017-09-21 16:33:07 · 8592 阅读 · 0 评论 -
【python学习笔记】Python中排序sorted()和list.sort()
说明sorted 和list.sort 都接受key, reverse定制。但是区别是。list.sort()是列表中的方法,只能用于列表。而sorted可以用于任何可迭代的对象。list.sort()是在原序列上进行修改,不会产生新的序列。所以如果你不需要旧的序列,可以选择list.sort()。 sorted() 会返回一个新的序列。旧的对象依然存在。sort是容器的函数:sort(cmp=No原创 2017-09-21 16:36:29 · 2278 阅读 · 0 评论 -
【python学习笔记】Python函数式编程
说明函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是“怎么干”,而函数函数式编程的思考方式是我要“干什么”。在Python中有lambda,map,reduce,filter等内置方法。匿名函数(lambda)语法lambda args: expression参数(args)的语法与普通函数一样,同时表达式(expression)的值就是匿名函数调用的返回值;而la原创 2017-09-23 16:44:09 · 1871 阅读 · 0 评论 -
【python学习笔记】Python对经纬度处理
说明因为地球是球面,所以地球平面间的距离也得根据球面来计算。 连个问题: - 两经纬度点之间的距离 - 根据一个给定经纬度的点,进行附近若干距离地点查询两点之间的距离# 根据经纬度计算距离def __distance(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数) """ 根据经纬度计算距离 :param lon原创 2017-10-17 14:29:28 · 17253 阅读 · 5 评论 -
【python学习笔记】线程Threading
说明Threading用于提供线程相关的操作。线程是应用程序中工作的最小单元,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。thread方法: - t.start() : 激活线程 - t.getName() : 获取线程的名称 - t.setName() : 设置线程的名称 - t.name原创 2017-10-25 17:17:46 · 1644 阅读 · 0 评论 -
【python学习笔记】Python实现协程yield方法和gevent库
说明协程最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充原创 2017-10-25 17:19:57 · 1892 阅读 · 0 评论 -
Python字典集合数据结构深入理解
说明在python中字dict和set是非常常用的两种数据结构,但是两种数据结构为什么要放在一起讨论。因为他们之所以拥有非常快的速度,是因为他们的内部结构都是散列表(散列表其实是一个稀疏数组总是有空白元素的数组称为稀疏数组)dict中的散列表散列表算法正常想要获取dict中的值,首先要知道key通过dict[key]获取对应的value,在散列表中为了达到这种操作,首先会计算key的hash值即原创 2017-11-02 20:49:28 · 5364 阅读 · 0 评论 -
Python并发concurrent.futures和asyncio
Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码。从Python3.2开始,标准库为我们提供了concurrent.futures模块,concurrent.futures 模块的主要特色是 ThreadPoolExecutor 和 ProcessPoolExecutor 类,这两个类实现的接口能分别在不同的线程或进程中执行可调原创 2017-11-13 11:29:58 · 4024 阅读 · 0 评论