python基础知识(实用)_第1页
python基础知识(实用)_第2页
python基础知识(实用)_第3页
python基础知识(实用)_第4页
python基础知识(实用)_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、python 基础知识目录python 基础知识 .1前言:.2一、 基础知识.31.1 安装.31.2 交互式解释器.31.3 函数、变量、模块.41.4 字符串.4二、 列表.52.1 序列的操作.52.2 列表的基本操作.72.3 列表的方法.8三、 元组.93.1 元组的操作 .103.2tuple 函数 .10四、 字符串.104.1 字符串格式化 .104.2 字符串的方法 .11五、 字典.115.1dict() 函数 .115.2 字典基本操作 .125.3 字典的格式化字符串.125.4 字典的方法 .12六、 条件、循环和其他语句.146.1 模块导入 .146.2 赋值

2、. 146.3 语句块 .156.4 条件语句 .156.5 循环 . 166.6 列表推导式 .186.7pass/del/exec/eval .18七、7.47.5八、九、抽象(函数).18创建函数 .18文档字符串 .19参数 . 19作用域 .22递归 . 23对象.24对象的特性 .24类的创建和特性的私有化.24子类与超类 .25异常.26内建异常类 .26自定义异常类 .27捕捉异常 .27十、 魔法方法、属性、迭代器.2810.1 构造方法 .2810.2 重写 .2810.3 属性 .2910.4 静态方法与类成员方法 .

3、 3110.5 迭代器 .32十一、 模块和包.3311.1 模块的导入 .3311.2 包 .3411.3 标准库 .36前言:什么是 python:官方解释:一种解释型的、面向对象的、带有动态语义的高级程序设计语言。优点:简单、强大,程序员在编程时能够保持自己的风格,容易实现自己想要的功能,程序 清晰易懂。历史: guido van rossum 在 20 世纪 90 年代初创造了这门语言。一、 基础知识1.1 安装1. 使用包管理器安装 python,如通过 yum 安装;2. 从源文件编译安装 python:(1) 下载源代码;下载扩展名为.tgz 的文件保存到本地某一目录下;(2)

4、进入该目录,使用 tar xzvf python-2.6.4.tgz 对文件解压缩;(3) 进入已解压的文件目录,cd python-2.6.4 运行以下命令:./configure -prefix=$(pwd)makemake install(4) 将当前文件夹路径放到环境变量 pyth 中。在 python 脚本首行写上“#!/usr/bin/env python”后,不管 python 二进制文件在哪里, 程序都会自动执行。若系统中安装了新版本的 python,同时旧版本仍然存在,那么应该直接指明新版本路径, 如:#!/usr/bin/python2.61.2 交互式解释器安装了 pyt

5、hon 并设置了环境变量后,输入 python 进入交互式解释器。在交互式解释器中可以直接计算出表达式的值,如输入 1+1 后按回车,输出 2输入 1/2,输出 0(因为计算结果的小数部分被截除了)输入 1/21.0/2 ,输出 0.5输入 1/2,输出 0;输入 1.0/2.0,输出 0.0(/双斜线表示进行整除)1.3 函数、变量、模块内建函数:input():使用 input 函数接收输入值,如 x=input(),输入 12,则 x=12 pow(2,3)=8abs(-10)=10round(1.8/2)=1.0, 四舍五入了模块:(1) math.floor(1.8/2)=0.0,

6、向下取整floor 函数不能直接用,要先加载 math 模块: import mathimport mathint(math.floor(32.9)输出:32(2)另外用下面的方式直接 import 函数,不需要在函数前加上模块名了: from math import floorint(floor(32.9)变量:可以使用变量来引用函数,即将某个函数赋给一个变量: foo=math.sqrtfoo(4)输出:2.01.4 字符串(1) 字符串拼接:+x =im x! y =im y! x+y输出:im x! im y! (2) 数值转化成字符串str、repr 与反引号:可将数值转化成字符串s

7、tr 会把值转换为合理形式的字符串;repr 会创建一个字符串,以合法的 python 表达式的形式来表示值。如:print str(hello world!) 输出:hello world!print repr(hello world!) 输出:hello world!反引号: (python3.0 中已不再使用反引号,建议用 repr)可以将数字与字母连接在一起,如:temp=42print temp is: + temp 输出:temp is: 42print temp + and + 123 输出:42and123使用用 repr 或 str:print temp is: +repr(

8、temp) 输出:temp is: 42print temp is: +repr(temp) + str(123) 输出:temp is: 42123(3) 多行字符串长字符串跨多行时,用三个单引号或三个双引号,这样在字符串中可以同时使用单引号 和双引号。普通字符串跨多行时,也可在行尾用反斜线”,如:print “hello, how are you? “输出:hello, how are you?(4) 原始字符串输出原始字符串时字符串前面带r ,如:print rc:programe filenownew 输出:c:programe filenownewprint rc:new lets

9、go! 输出:c:new lets go!二、 列表python 中最基本的数据结构是序列(sequence),序列中每个元素被分配一个序号 即元素的位置,也称为索引,第一个索引是 0,最后一个元素索引标记为-1。 python 中包含 6 种内建序列:列表、元组、字符串、unicode 字符串、buffer 对象、xrange 对象。2.1 序列的操作所有序列类型都可以进行的特定操作如下:索引(indexing)分片(sliceing)加(adding)乘(multiplying)成员资格(检查某个元素是否属于序列) 索引序列中所有元素都是有编号的,从 0 开始递增。元素可以通

10、过编号进入访问。 实例:#!/usr/bin/pythonmonths = jan,feb,mar,apr,may,jun,jul,aug,sept,oct,nov,dec endings = st,nd,rd + 17* th + st,nd,rd + 7* th + styear = raw_input(year: )month = raw_input(month: )day = raw_input(day: )month_num = int(month)day_num = int(day)month_name = monthsmonth_num-1 #索引day_ord = day +

11、endingsday_num-1 #索引print month_name + + day_ord + + year输入 year: 2011month: 12day: 21输出:dec 21st 20 分片使用索引可以访问单个元素,使用分片可以访问一定范围内的元素。分片需要提供两个索引作为边界,用冒号分隔两个索引,第 1 个索引的元素包含在分片 内,第二个索引的元素不包含在分片内,如:tag=tag7:21输出:注:tag7:21,取第 7 到第 20 个字符。若想包含从第一个开始(或直到最后一个结束)的字符

12、串,可以将前一个(或后一个) 索引置空,如:tag:5, tag7:, tag:步长:分片中的第三个值(开始与结束索引之后)如:idx=1,2,3,4,5,6,7,8,9,10idx:2 输出:1, 3, 5, 7, 9idx:-1 输出:10, 9, 8, 7, 6, 5, 4, 3, 2, 序列加法两种相同类型的序列才能进行连接操作,如:1,2,3 + 4,5,6 输出:1, 2, 3, 4, 5, 6hello + _ + world 输出:hello_world不同类型序列不能相加,如:1,2,3 + hello 提示出错 序列乘法数字 x 与序列相乘后

13、,原序列被重复 x 次。12 * 10 输出:列表初始化,创建 10 个元素空间但没有值:none * 10 成员资格in 运算,检查一个值是否在序列中。例 1:users=taobao, alibaba, rootinput_name=raw_input(enter your user name: )if input_name in users:print input_name + is in users!else:print warning! + input_name + is not in users!例 2:db = smith,4309,jones,0921,albe

14、r,8745,username = raw_input(user name: )pin = raw_input(pin code: )if username, pin in db:print access granted!else:print warning: username or pin is error!2.2列表的基本操作列表与元组的区别:列表可以修改,元组不可以修改。列表的元素写在方括号中,元素间用逗号隔开,如:edward = edward,29,hangzhou (1) 元素赋值:如 x1=0(2) 删除元素:names = alice, beth, earl, dimdodel

15、 names2结果 names = alice , beth, dimdo (3) 分片赋值:可以一次为多个元素赋值:name = list(perl)name1: = list(ython)结果 name = p, y , t , h, o, n 可以实现插入元素:num = 1, 5num 1:1 = 2, 3, 4结果 num = 1, 2, 3, 4, 5可以实现删除元素:num = 1, 2, 3, 4, 5num2:4 = 结果 num = 1, 2, 52.3 列表的方法(1) appendnum = 1,2,3num.append(4)结果 num = 1,2,3,4(2) c

16、ountx = to, be, or , not , to, bex.count(to)结果为 2(3) extenda = 1, 2, 3b = 4, 5, 6a.extend(b)结果 a = 1, 2, 3, 4, 5, 6(4) indexa=who, am, i, ?a.index(?)结果为 3(5) insertnum = 1, 2, 3, 4, 5num.insert(3, four )结果 num = 1, 2, 3, four , 4, 5(6) pop:移除列表中的一个元素,并且返回该元素的值,如:x = 1, 2, 3x.pop() 返回 3x.pop(1) 返回 2(

17、7) remove:移除表中某个值x = to, be, or , not , to, be x.remove(be)结果 x = to, or , not , to, be(8) reverse:将列表中的元素反向存放 x = 1, 2, 3x.reverse()结果 x = 3, 2, 1(9) sort:对原列表进行排序,返回值为空 x = 5, 1, 2, 4, 3, 6y=x.sort()结果 x = 1, 2, 3, 4, 5, 6y 无值sorted()函数:x = 5, 1, 2, 4, 3, 6x =sorted(x)结果 x = 5, 1, 2, 4, 3, 6y = 1,

18、 2, 3, 4, 5, 6(10) 比较函数 cmp():cmp(1,2) 返回-1cmp(1,1) 返回 0cmp(2,1) 返回 1三、 元组元组是不可变序列。空元组:()一个值的元组:1, 或 多个值的元组:1, 2, 3(1,) 其中逗号不可省略 或(1, 2, 3)2*(2+3) 输出 10 #没有逗号,普通的值计算2*(2+3,) 输出(5, 5) #有逗号,表示是一个元组,相乘后得到一个新的元组,有两个值3.1元组的操作1. 创建元组:x = 1, 2, 32. 访问元组元素:x1输出:2x0:2 输出:(1, 2)3.2tuple 函数将序列转换为元组:tuple(1, 2,

19、 3) 输出(1, 2, 3) #列表tuple(abc)输出(a, b, c) #字符串tuple(1, 2, 3) 输出(1, 2, 3) #元组四、 字符串字符串是不可改变的,不能对一个字符串重新赋值。4.1 字符串格式化用%分隔,%左侧放置一个字符串的格式,在%右侧放置希望格式化的字符串值。如: str=(1,2,3,4,5)print %s%s%s%s%s % str输出:12345例:x =1.0y =3.0z =x / yprint %.5f % z输出:0.33333字符串宽度、精度、符号、对齐、0 填充:%-10.2f % 3.1415926 输出:3.14 -表示左对齐%1

20、0.2f % 3.1415926 输出: 3.14默认右对齐%+10.2f % 3.1415926 输出: +3.14 +表示显示正负数 %+10.2f % -3.1415926 输出: -3.14%+-10.2f % -3.1415926 输出:-3.14 %+-10.2f % 3.1415926 输出:+3.14 %010.2f % 3.1415926输出:0000003.14 0 表示开头不足部分用 0 补全4.2 字符串的方法1. find():在母串中查找子串,找到后返回索引值,找不到返回-1.2. join(): 连接字符串列表:如str = 1, 2, 3sep = +sep.j

21、oin(str) 输出:1+2+3dirs = ,usr , bin, env/.join(dirs) 输出:/usr/bin/env3. lower(): 返回字符串的小写字母,如:abc .lower() 输出:abc4. replace(): 将字符串的所有匹配项都替换,再返回替换后的字符串。如:i am a student.replace(i am,im) 输出:im a student5. split(): join 的逆方法,将字符串分割成序列,如:1+2+3.split( +) 输出:1, 2, 36. strip(): 去除一个字符串的前后空格,再返回去除空格后的字符串。7.

22、translate(): 只处理单个字符,可以同时进行多个替换。from string import maketranstable=maketrans(cs,kz) /创建转换表,格式 string. maketrans(from,to) print table97:123 输出:abkdefghijklmnopqrztuvwxyzstr=this is an incredible test.translate(table)print str 输出:thiz iz an inkredible tezt五、 字典键/值对之间用冒号隔开,项之间用逗号隔开,整个字典用大括号括起来。如: phoneb

23、ook=宁波:0574, 台州:0576, 杭州:0571phonebook宁波 输出:05745.1dict() 函数可以使用该函数通过其他映射或(键,值)对序列建立字典,如: items=(name,alice),(age,28)d=dict(items)print d输出字典:age: 28, name: alice或者用关键字参数形式 d=dict(name=alice,age=28)print d输出字典:age: 28, name: alice5.2 字典基本操作与序列(sequence)类似。字典:phonebook=宁波:0574, 台州:0576, 杭州:0571 len(p

24、honebook)phonebook宁波phonebook绍兴=0573 /增加一个字典项del phonebook 台州 /删除一个字典项绍兴 in phonebook /返回 true台州 in phonebook /返回 false5.3 字典的格式化字符串hangzhous area number is %(杭州)s % phonebook输出:hangzhous area number is 05715.4 字典的方法(1) clear(): 清除字典中所有项目,如: phonebook=宁波:0574, 台州:0576, 杭州:0571 x=phonebook.clear()pri

25、nt phonebook 输出:print x输出:none(2) copy(): 浅复制,返回一个具有相同键-值对的新字典。如: phonebook=nibo:0574, taizhou:0576, hangzhou:0571x=phonebook.copy()xtaizhou=0576-0576 /修改 valuex输出:nibo: 0574, hangzhou: 0571, taizhou: 0576-0576phonebook 输出: nibo: 0574, hangzhou: 0571, taizhou: 0576 x.clear()x输出: /删除字典phonebook 输出: n

26、ibo: 0574, hangzhou: 0571, taizhou: 0576(3) fromkeys(): 使用给定的键建立新的字典,键的默认值为 none,如: x=y= x.fromkeys(name,age)xy输出:输出:age: none, name: none(4) get(): 访问字典中的项,即使项不存在时,也不会出错,如: x=name:alice, age:28print x.get(name)print x.get(addr)print x.get(name, n/a)print x.get(addr, n/a)输出:alice输出:none输出:alice / 键存

27、在,返回对应值输出:n/a /自定义默认值为n/a,替换 none(5) has_key(): 检查字典中是否包含给出的键,相当于表达式 k in dict, 注:python3.0 不包括这个函数x.has_key(name) 输出:truex.has_key(addr)输出:false (6) items(): 将字典的所有项以列表方式返回,如:x.items() 输出:(age, 28), (name, alice)(7) keys(): 将字典的所有关键字以列表方式返回,如:x.keys() 输出:age, name(8) values():将字典的所有 values 值以列表方式返回

28、,如: x.values() 输出:28, alice(9) pop(): 返回对应给定键的值,再将该键值对从原字典中删除,如 x.pop(name) 输出:alicex输出:age: 28 /原来的(name, alice)已被删除(10) popitem(): 弹出字典的项,如: x=no.1:1, no.2:2, no.5:5, no.4:4, no.3:3x输出:no.5: 5, no.4: 4, no.3: 3, no.2: 2, no.1: 1x.popitem() 输出:(no.5, 5) x.popitem() 输出:(no.4, 4)x输出:no.3: 3, no.2: 2,

29、 no.1: 1(11) setdefault(): 与 get()类似,键存在返回对应值,但给定键不存在时,返回默 认值后更新了字典,如:x=name:alice, age:28print x. setdefault (name) 输出:alicex输出:age: 28, name: aliceprint x. setdefault (addr) 输出:nonex输出:age: 28, name: alice, addr: noneprint x. setdefault (name, n/a) 输出:alicex输出:age: 28, name: alice, addr: noneprint

30、 x. setdefault (addr, n/a) 输出:nonex输出:age: 28, name: alice, addr: noneprint x. setdefault (phone, n/a) 输出:n/ax输出:phone: n/a, age: 28, name: alice, addr: none/用自定义值n/a,替换默认值 none(12) update(): 可以用一个字典项更新另外一个字典,关键字存在时改变其对应 值,关键字不存在时添加新项,如:x =name:alice, age:28y =age:25, phone:0571-12345x.update(y)x输出:

31、phone: 0571-12345, age: 25, name: alice六、 条件、循环和其他语句 6.1 模块导入(1)(2)(3)(4)(5)6.2 赋值import from import , , from import *import as from import as (1) 序列解包:values=1,2,3values 输出(1, 2, 3)x,y,z= values / values 中的值赋给对应的变量x输出 1y 输出 2z输出 3student=name:alice, age:28key, value = student.popitem()print key, va

32、lue 输出:age 28(2) 链式赋值:x=y=student=name:alice, age:28(3) 增量赋值:x=1x+=1 x 结果为:2x*=3 x 结果为:6x/=2 x 结果为:3x%=3 x 结果为:0x-=1 x 结果为:-1str=foo str 为:foostr+=bar str 为:foobarstr*=2 str 为:foobarfoobar6.3 语句块以冒号(:)标识语句块的开始,块中每个语句缩进相同空格数,当回退到和已经闭合 的块一样的缩进量时表示当前语句块已经结束。例:def maximum(x, y):print test func_return be

33、gin .if x y:print x is maximum:print test func_return end . return xelse:print y is maximum:print test func_return end . return yprint test func_return end . nprint maximum(2, 3)print n6.4 条件语句(1) 布尔值布尔值为假的布尔表达式有:false none 0 “” () bool(false)= bool(none)= bool(0)=bool()=bool()=bool()=bool()=false(2) if elif else 语句:num = input(enter a number: )if num 0:print the number is positive elif num 0:print the number is negative else:print the number is zero(3) 运算符:a. 比较运行符b. 布尔运算符:and 、 or 、 not(4) 断言:检查某些条件,如果不符合直接报错,如: age=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论