Python---9高级特性】的更多相关文章

Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不是真正了解这一块. 举个例子进行测试一下: In [19]: class A(): ....: pass ....: In [20]: a = A In [21]: type(a) Out[21]: classobj In [22]: class B(object): ....: pass ....…
本节跟第三节关系密切,最好放在一起来看:python的高级特性3:神奇的__call__与返回函数 一.闭包:闭包不好解释,只能先看下面这个例子: In [23]: def outer(part1): ....: def inner(part2): ....: return part2*part1 ....: return inner ....: In [24]: f = outer(33) In [25]: f(100) Out[25]: 3300 In [26]: f(11) Out[26]…
python的高级特性:切片,迭代,列表生成式,生成器,迭代器 #演示切片 k="abcdefghijklmnopqrstuvwxyz" #取前5个元素 k[0:5] k[:5] #后5个元素 k[-5:] #vwxyz #每隔一个取一个 k[::2] #acegikmoqsuwy #原样复制一个 k[:] #演示迭代 d={'a':1,'b':2,'c':3} for key in d: print(key) #结果输出abc, 即输出key, 而且要注意dict的迭代顺序不像lis…
掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中非常有用的高级特性,1行代码能实现的功能绝不用5行代码,请始终牢记,代码越少,开发效率越高. 切片(Slice) 取一个list或tuple的部分元素是非常常见的操作,比如,一个list如下: L=['Micheal','Sarah','Bob','Jack'] 当我们要取前N个元素,使用循环操作很…
掌握了python的数据类型,语句和函数,基本上就可以编出很多有用的程序了. 但是在python中,并不是代码越多越好,代码不是越复杂越好,而是越简单越好. 基于这个思想,就引申出python的一些高级特性. 切片 在python中,取list或者是tuple的部分元素是非常常见的操作. L = ["gege","gege","egye"]; [L[0],L[1],L[2]] 上面这个是一个笨办法,因为扩展一下,取前面n个元素就没办法了. r =…
Python 高级特性 2 列表生成式 列表生成式就是指类似这样的代码:[x for x in range(1, 11)] >>> L = [x for x in range(1, 11)] >>> L [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 生成了一个列表L,从1到10的列表,一共(11-1)-1 = 9个元素. L这个列表也可以这样生成:L = list(range()). >>> L= list(range(1, 11))…
Python 高级特性 1 切片 将L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']列表中前上个3个元素: L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] r = [] n = 3 for i in range(n): r.append(L[i]) print(r) 运行: ['Michael', 'Sarah', 'Tracy'] 使用循环,书写的代码量较多,我们可以使用切片的方式: L = ['…
__call__是一个很神奇的特性,只要某个类型中有__call__方法,,我们可以把这个类型的对象当作函数来使用. 也许说的比较抽象,举个例子就会明白. In [107]: f = abs In [108]: f(-10) Out[108]: 10 In [109]: dir(f) Out[109]: ['__call__', '__class__', '__delattr__', '__dir__', ...] 上例中的f对象指向了abs类型,由于f对象中有__call__方法,因此f(-1…
一.切片 L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']取出前三个元素 , 笨方法就是通过下标一个一个获取 [L[0], L[1], L[2]]Python做好了封装可以通过切片就行快速获取L[0:3] 进行获取 还可以倒着来 比如L[-2,-1]取出前几个 L[:N]后几个L[N:]前几个每几个取一个L[:N:X]所有数每几个取一个L[::X]其中字符串也可以进行切片 例如C#的substring(N,X) 当然tuple也肯定可以.二.迭代给…
在面向对象的程序设计中,继承(Inheritance)允许子类从父类那里获得属性和方法,同时子类可以添加或者重载其父类中的任何方法.在C++和Java的对象模型中,子类的构造函数会自动调用父类的构造函数,但在Python中却不是这样,你必须在子类中显示调用父类的构造函数. In [1]: class Employee: ...: def __init__(self,name,salary=0): ...: self.name = name ...: self.salary = salary ..…