




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一:range()与xrange()的比较:在 Python 中,range 和 xrange 均可以用来做迭代的范围,不过 range 返回的是 list,而 xrange 则返回一个 xrange object。如下:>>> type(range(10)<type 'list'>>>> type(xrange(10)<type 'xrange'>>>>xrange()比range()效率更高:因为range返回的是一个list对象,然后再对list对象进行遍历,而xrange返回的
2、是xrange对象,每次迭代才返回本次迭代的结果。比如:for x in range(10000):will generate a list of ten thousand elements, and will then loop through each of them in turnfor x in xrange(10000):will genarate ten thousand integers one by one, passing each to the variable x in turn.二:内置函数:ord()与chr()可以实现一个字符与ascii之间的转换,比如:>&
3、gt;> ord('a')97>>> chr(97)'a'>>>例如将英文字母放入列表中:>>> list = >>> for i in xrange(ord('a'),ord('z')+1,1):. list.extend(chr(i).>>>注意:chr()与str()的区别:例如以下代码:>>> chr(97)'a'>>> str(97)'97'将一个字符串转换为
4、对应的ascii码值,map比如:>>> map(ord,"abcde")97, 98, 99, 100, 101反过来,比如:>>> map(chr,range(97,101)'a', 'b', 'c', 'd'在将列表中的字符连接起来:>>> "".join(map(chr,range(97,101)'abcd'>>>三、os模块:1、getcwd():返回一个表示当前工作目录的字符串,比如: >
5、;>> os.getcwd()'F:films'>>> type(os.getcwd()<type 'str'>2、listdir():返回一个参数所指定目录的所有文件名字符串的列表,比如: >>> type(os.listdir(os.getcwd()<type 'list'>>>>>>> os.listdir(os.getcwd()'.metadata', '.project', '.pydevp
6、roject', 'src'>>>四、内置数据类型:1、list: 注意:使用extend()添加元素时,注意参数时list,比如:>>> list = >>> list.extend("asdasdsa")>>> list'a', 's', 'd', 'a', 's', 'd', 's', 'a'>>>>>> lis
7、t.extend('adasdsada')>>> list'a', 's', 'd', 'a', 's', 'd', 's', 'a', 'adasdsada'>>>>>> list.extend(213121)Traceback (most recent call last): File "<stdin>", line 1, in <modul
8、e>TypeError: 'int' object is not iterable>>>>>> list.extend("12121")>>> list'a', 's', 'd', 'a', 's', 'd', 's', 'a', 'adasdsada', '1', '2', '1', '2',
9、 '1'>>>在python中,字符串就是一个序列,看成一个列表类型。五、模块python的模块-最高级的程序组织单位。1、模块中的语句: 比如print语句2、模块的属性: 内置属性:每个模块中都有内置模块。比如: >>> dir()'_builtins_', '_doc_', '_name_', '_package_' 自定义属性:就是在模块中定义的属性。比如:>>> count = 0>>> str = "i love you&
10、quot;>>> dir()'_builtins_', '_doc_', '_name_', '_package_', 'count', 'str' 3、模块中的函数: 内置函数:可以在模块中直接调用。一些常用内置函数,比如:range() 与xrange() 以下常用内置函数:§ help(obj) 在线帮助, obj可是任何类型 § callable(obj) 查看一个obj是不是可以像函数一样调用
11、§ repr(obj) 得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝 § eval_r(str) 表示合法的python表达式,返回这个表达式 § dir(obj) 查看obj的name space中可见的name § hasattr(obj,name) 查看一个obj的name space中是否有name § getattr(obj,name) 得到一个obj的name space中
12、的一个name § setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object § delattr(obj,name) 从obj的name space中删除一个name § vars(obj) 返回一个object的name space。用dictionary表示 § locals() 返回一个局部name space,用dictionary表示
13、60; § globals() 返回一个全局name space,用dictionary表示 § type(obj) 查看一个obj的类型 § isinstance(obj,cls) 查看obj是不是cls的instance § issubclass(subcls,supcls) 查看subcls是不是supcls的子类 类型转换函数:§ chr(i) 把一个ASCII数值,变成字符 § ord(i) 把一个字
14、符或者unicode字符,变成ASCII数值 § oct(x) 把整数x变成八进制表示的字符串 § hex(x) 把整数x变成十六进制表示的字符串 § str(obj) 得到obj的字符串描述 § list(seq) 把一个sequence转换成一个list § tuple(seq) 把一个sequence转换成一个tuple § dict(),dict(list) 转换成一个dictiona
15、ry § int(x) 转换成一个integer § long(x) 转换成一个long interger § float(x) 转换成一个浮点数 § complex(x) 转换成复数 § max(.) 求最大值 § min(.) 求最小值 自定义函数:自己定义的函数,使用关键字def定义的,不需要定义返回类型,Python能返回任何类型。比如:>>> def fu
16、nc():. print "hello world !".>>> func()hello world ! lambda函数: 格式如下:lambda arg1,arg2, : 表达式比如:>>> g = lambda x,y : x*y>>> print g(12,12)144>>> print g<function <lambda> at 0x00DEE930> 表示:lambda语句构建的其实是一个函数对象比如以下的一些应用:>>> foo = 1,2,4,
17、5,6,7,8,9,10>>> print filter(lambda x:x%2=0,foo)2, 4, 6, 8, 10>>>>>> print map(lambda x:x+10,foo)11, 12, 14, 15, 16, 17, 18, 19, 20>>>>>> print reduce(lambda x,y:x+y,foo)52>>> generator函数:该函数的定义域普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可。 与yield关键字的使用。&
18、gt;>> def gene():. for i in range(10):. yield i 使用了yield关键字 .>>>>>> print gene()<generator object gene at 0x00DE2B70> #表示是generator函数对象>>>使用for循环对generator进行遍历,如下:>>> for i in gene():. print i.0123456789>>>使用generator函数对象中next()方法遍历,如下:>>
19、;> generator = gene()>>> print generator.next()0>>> print generator.next()1>>> print generator.next()2>>> print generator.next().>>> print generator.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopI
20、terationYield与return的区别:如下代码:>>> def func():. for i in range(5):. return i.>>>>>> print func()0>>>而yield:>>> def func():. for i in range(5):. return i.>>>>>> print func()0>>>yield关键字:包含yield语句的函数会被特地编译成生成器。当函数被调用时,他们返回一个生成器对象,这个
21、对象支持迭代器接口。函数也许会有个return语句,但它的作用是用来yield产生值的。六、python中的变量和常量: 常量:Python中不像java使用关键字(static final)来声明一个常量,python中没有提供关键字,可以自己定义个常量类来存放常量 局部变量:通常是在函数或者类的方法中直接使用,在该函数或者类方法之外,不能引用该变量。 全局变量:在程序文件中任何地方都可以引用,包括函数和类的内部;但是如果在函数和类中对全局变量赋值,必须在该函数或者类中声明该变量为全局变量,否则经过赋值操作后,变量为本地变量。重点:如果在函数或类中对全局变量进行了赋值,则该全局变量就变成了局
22、部变量,无论是在引用该变量之前还是在引用该变量之后。如果在函数或类中未对全局变量进行赋值操作,那么对于该函数来说,此变量是一个全局变量。所以,这时有一个问题,怎样才能在函数或类中对全局变量进行重新赋值呢?这时就要使用到global关键字。global的作用是:声明为全局变量,那么无论是否对其进行了赋值操作,该变量都将作为全局变量。在函数或类中使用global声明的变量,就为全局变量,比如:>>> def func():. global aaaa. print aaaa.>>>>>> func()>>> print aaaa
23、>>>七、python中的面向对象:1、self关键字: 类中的方法必须有一个self参数。2、属性和方法 访问权限:python中的私有属性和私有方法不像java中的私有属性,使用private修饰符,而是在属性或方法的名字前面使用两个下划线表示私有性。比如_price,_grow()分别表示的是私有属性和私有方法。类的外部不能访问私有属性。 怎样访问类中的私有属性: 格式:Instance._classname_attribute,比如:apple._Fruit_color 通常不采用以上做法来访问私有属性,而是与java一样,通过setter与getter实现。 属法:
24、 类属性可以被类访问,也可以被实例对象访问,但是实例属性只能被实例访问。与java不同的是,java中使用static关键字修饰类属性,而python中不使用任何修饰符,只要声明一下就可以,但是实例属性要使用self关键字作为前缀的。 实例属性:以self作为前缀的属性。 类属性:直接声明的变量,python中类属性都能被类和对象访问。 类的内置属性:用于管理内的内部关系,比如:_dict_、_base_、_doc_ 方法: 类中的方法至少要有一个参数,调用时不必给该参数赋值,该参数就是self。相当于java中的this关键字。 Self:用于区分函数和类的方法。注意函数要与方法区分开来。
25、静态方法: Python使用函数staticmethod()或 staticmethod把普通的函数转换为静态方法。比如: staticmethod def getPrice(): print Fruit.price def _getPrice(): Fruit.price = Fruit.price + 10 print Fruit.price count = staticmethod(_getPrice)注意:python的静态方法没有和类的实例进行名称绑定,python的静态方法相当于全局函数。 类方法:Python使用函数classmethod()或 classmethod把方法转换为
26、静态方法,这时的方法必须要有参数。比如: classmethod def getPrice(self): print Fruit.price def _getPrice(self): Fruit.price = Fruit.price + 10 print Fruit.price count = classmethod(_getPrice)3、类中的构造函数:_init_()4、析构函数:_del_() 显示释放对象占用的资源,是一种释放资源的方法。默认自动执行。如果程序中不提供析构函数,会在后台提供默认的析构函数。5、垃圾回收机制:Python使用gc模块。6、类的内置方法: _init_(
27、self,):初始化对象,在创建新对象时调用 _new_():在_init_()之前被调用,用于生产实例对象。 _getitem_(self,key):把类中的属性定义为序列 _str_:使用print语句时被调用,打印对象的信息,类似于java中object中的toString()方法。该方法中必须使用return语句。7、方法的动态特性:将一个已经定义好的函数添加到类中,还可以对已经定义好的方法进行修改。语法如下: Class_name.method_name = function_name Class_name:类名 Method_name:新的方法名 Function_name:已经定
28、义好的函数添加与修改的语法一样,只是method_name表示的含义不一样,添加表示新的名称,修改表示已存在的方法名。修改的时候,原来的类中方法的名字不变,只是将方法中的内容改变。 比如: class Fruit4: passdef add(self): print "grow."if _name_ = "_main_": Fruit4.grow = add fruit4 = Fruit4() fruit4.grow()8、继承: 在类名后使用一对括号表示继承关系。 如果在父类中定义了_init_方法,子类在自己的_init_方法中必须显示调用父类中的_
29、init_方法,如果子类要扩展父类中的行为,可以添加_init_方法的参数。 比如: class Apple(Fruit): def _init_(self,color): Fruit._init_(self) 调用父类中的_init_方法类似于java中的super关键字,在java中,首先实例化父类,再实例化子类。这就是为什么要在子类的_init_中显示调用父类的_init_了。 在java中使用super关键字来调用父类中的构造方法,在子类的无参构造方法中,通常都隐藏了super,那么在python中还可以使用super类的super()调用父类的_init_方法。 在使用super时,
30、父类要继承object。因为super类的实现代码继承了object,所以父类必须继承object。 Super的语法:super(type,obj) type:某个类 obj:通常是type类的实例化对象,通常使用self关键字表示。 例子:class Fruit(object): def _init_(self,args): print "parent %s" %argsclass Apple(Fruit): def _init_(self,args): super(Apple,self)._init_(args) print "child"if _
31、name_ = "_main_": Apple("+") 如果在子类中没写_init_方法时,当子类在实例化时,会调用父类中的_init_方法,所以在使用时,就应该在子类中写上_init_方法。在python中,是支持多继承的。语法:class_name(parent_class1,parent_class2,.)在多重继承中,子类只会调用第一个被继承的类的_init_,即parent_class1类中的_init_方法。比如以下代码:class Fruit(object): def _init_(self): print "initializ
32、e Fruit" def grow(self): print "grow ."class Vegetable(object): def _init_(self): print "initialize Vegetable" def plant(self): print "plant ."class Watermelon(Fruit,Vegetable): passif _name_ = "_main_": w = Watermelon() w.grow() w.plant()9、抽象类: 抽象类有抽象方法组成。 Java中抽象类不可以实例化,通过子类实例化。Python也是。 在java中可以使用abstract修饰符来声明抽象类,而python中只能用一个普通类来表示,怎样来声明一个抽象类呢?可以通过python的NotImplementedError类来模拟抽象类。 NotImplementError类继承自Python运行时错误类RuntimeError。 在python中实现抽象类是这样的:如果对该类进行实例化时,就抛出异常。比如代码:#抽象类class Fruit: def _init_(self
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州省安顺市本年度(2025)小学一年级数学统编版课后作业(上学期)试卷及答案
- 消防设施操作员(初级)试题库(附答案)
- 2025年湖南省永州市宁远县中考二模英语试题(原卷版+解析版)
- 重庆市复旦中学教育集团2024-2025学年高一下学期期中考试地理试题(原卷版+解析版)
- 竹材国际市场准入与标准对接考核试卷
- 自行车骑行规则与礼仪考核试卷
- 液压系统的动态平衡与稳定性分析考核试卷
- 聚合纤维的绿色产品设计考核试卷
- 海洋石油钻探作业安全管理规范考核试卷
- 热电联产系统在能源安全与环境保护中的双重责任考核试卷
- 2024年烟台龙口市卫生健康局所属事业单位招聘工作人员笔试真题
- 2025年FRM金融风险管理师考试专业试卷(金融风险管理案例分析)
- 泥尾运输合同协议
- 低压电器 课件 单元三 项目三 任务一 掌握接触器联锁正反转控制线路
- 食堂食品追溯管理制度
- 北京市石景山区2025年高三统一练习(生物及答案)(石景山一模)
- 森林火灾风险评估-全面剖析
- 人教版2024-2025学年度八年级下册物理期中模拟测试卷(含答案)
- 西部计划考试考题及答案
- 2024上海市招聘社区工作者考试题及参考答案
- 2024年河北省初中学业水平适应性测试生物学试卷
评论
0/150
提交评论