码迷,mamicode.com
首页 > 编程语言 > 详细

python 高级知识点

时间:2017-07-07 20:12:43      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:过滤   lte   排列   instance   生成   process类   for   对list进行排序   参数   

1.切片:截取List,tuple指定范围内的值:>>L[0,3]

2.如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。    在Python中,迭代是通过for ... in来完成的   for x in L      print(x)

3.列表生成式时,就是动态的创建列表,把要生成的元素x * x放到前面,后面跟for循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

>>> [x * x for x in range(1, 11) if x % 2 == 0] [4, 16, 36, 64, 100]

还可以使用两层循环,可以生成全排列:

>>> [m + n for m in ‘ABC‘ for n in ‘XYZ‘] [‘AX‘, ‘AY‘, ‘AZ‘, ‘BX‘, ‘BY‘, ‘BZ‘, ‘CX‘, ‘CY‘, ‘CZ‘]

运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁。

4。生成器 在Python中,这种一边循环一边计算的创建list的机制,称为生成器:generator,节省大量的空间       g=(x * x for x in range(10)]        for  x in g:              print(x)

5.这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。     以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。      可以使用isinstance()判断一个对象是否是Iterator对象: 小结 凡是可作用于for循环的对象都是Iterable类型;

凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

Python的for循环本质上就是通过不断调用next()函数实现的,例如:

for x in [1, 2, 3, 4, 5]:     pass

6. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 可见,abs(-10)是函数调用,而abs是函数本身。 说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。

7.编写高阶函数,就是让函数的参数能够接收别的函数。map,reduce

8.filter()函数 Python内建的filter()函数用于过滤序列。

9.排序算法 Python内置的sorted()函数就可以对list进行排序: sorted()也是一个高阶函数。用sorted()排序的关键在于实现一个映射函数。 >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:

>>> sorted([‘bob‘, ‘about‘, ‘Zoo‘, ‘Credit‘], key=str.lower, reverse=True) [‘Zoo‘, ‘Credit‘, ‘bob‘, ‘about‘]

10.闭包 内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”的程序结构拥有极大的威力。 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

11.匿名函数  关键字lambda表示匿名函数,冒号前面的x表示函数参数。 >>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])) [1, 4, 9, 16, 25, 36, 49, 64, 81

12.装饰器  在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。

13. 偏函数  简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

14. 模块  在Python中,一个.py文件就称之为一个模块(Module)。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。 作用域 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。

15 正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等;

类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名;

类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;

之所以我们说,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨平台版本的多进程模块。 multiprocessing模块提供了一个Process类来代表一个进程对象

python 高级知识点

标签:过滤   lte   排列   instance   生成   process类   for   对list进行排序   参数   

原文地址:http://www.cnblogs.com/csj007523/p/7133535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!