Python基础篇之过程型程序设计

一、Python过程型程序设计

面向过程
以指令为中心,由指令处理数据
如何组织代码解码问题
面向对象
以数据为中心,所有的处理代码都围绕数据展开
如何设计数据结构组织数据,并提供对此类数据所允许处理操作
简单方法:
1)、编译安装新版本至某特定路径

2)、pyenv
1、python的关键要素
基本数据类型
对象引用
组合数据类型
逻辑操作符
控制流语句
算术操作符
输入/输出

函数创建和引用

2、字串是一个组合,可以只引用一个变量,是不可变类型
使用type()获取函数的类型
使用id()获取内存的位置
使用dir()获取模块的子命令
使用len()获取元素内部的个数
使用help()获取函数详细信息
dir(__builtin__)可以查看内建的函数
callable()可用于测试函数是否可以调用
每个模块都有一个名为__name__的内建变量,此变量值会根据调用时
如果模块被导入,__name__的值是模块的名字
如果模块被直接执行,__name__的值是“__main__”

二、python对象类型及其运算

程序中存储的所有数据都是对象

每个对象都有一个身份,一个类型和一个值

实例被创建之后,其身份和类型就不可改变

如果某个对象包含对其他对象的引用,则将其称之为容器

class:通常在自定义类型是使用

type:内置变量
instance:实例化
类:数据和方法
数据:变量
方法:函数
类:实例化成对象
两个对象的比较:
1).值比较:对象中的数据是否相同
2).身份比较:两个变量名引用的是否为同一对象
3).类型比较:两个对象的类型是否相同
1、核心数据类型
数字:int,long,flocat,complex,bool
字符:str,unicode
列表:list
字典:dict
元组:tuple
文件:file
其他类型:集合(set),frozenset,类类型,空(None)
其他文件类工具:管道(pipes),先进先出管道(fifos),sockets
2、类型转换:

3、数字类型: 不可变类型
python的数字字面量:布尔型,整数,浮点型,负数
True:1
False:0
支持算术操作,比较操作 math模块可以实现算术的高级运算
4、序列类型:
1)字符类型
字符串字面量:把文本放入单引号、双引号或三引号中:前后要一致
如果要使用unicode编码,则在字符之前使用字符u进行标识,如u“mageedu”
文档字符串:模块、类或函数的第一条语句是一个字符的话,该字符串就成为文档字符串,可以使用__doc__来引用
运算符:
索引运算符:[i]可以使用负数,即倒着取值
切片运算符:[i:j]
扩展切片:[i:j:stride]
支持运算
索引,切片,min(),max(),len()等
支持操作

对象自有的操作

2)列表
容器类型 [ ]
任意对象的有序集合,通过索引访问其中的元素,可变对象
异构,任意嵌套
支持在原处修改:
修改指定的索引元素,修改指定的分片,删除语句,内置方法
l1 + l2:合并两个列表,返回一个新的列表,不会修改原列表
l1 * n:把l1重复N次,返回一个新列表
in:成员关系判断字符,用法 obj in container
not in: obj not in container
列表解析:[]
列表复制方法:
l1=[1,2,3,4]
浅复制
l2=l1
深度复制
import copy
l2=copy.deepcopy(l1)
l2=l1[:]
3)元组
表达式符号:()
容器类型
任意对象的有序集合,通过索引访问其中的元素,不可变对象,长度固定
支持异构,嵌套
常见操作:
()
(1,)
(1,2)
t1 + t2
t1 * n
in:
not in:
虽然元组本身不可变,但如果元组内嵌套了可变类型的元素,那么此类元素的修改不会返回元组
4)字典:dict
字典在其他编程语言中又称为关联数组或散列表
通过键实现元素存取,无序集合,可变类型容器,长度可变,异构,嵌套
{key1:value1,key2:value2,….}
{}:空字典
字典复制:d2=d1.copy()

d1.iteritems:返回一个迭代器对象

5)集合:无序排列的可以hash的值
支持集合关系测试:
成员关系测试:
in:
not in:
迭代
不支持:索引、元素获取、切片
集合的类型:set(),frozenset()
没有特定的语法格式,只能通过工厂函数创建
可以使用l1=set([1,2,3,4])
6)容器、类型、对象
(1).列表,元素,字典可以跨行定义,最后一个允许使用逗号
(2).所有对象都有引用计数,可以使用sys.getrefcount查看引用次数,使用del删除一个计数引用
(3).列表、字典都支持浅复制和深复制:深复制的方法可以使用copy模块中的deepcopy()实现
(4).python中的所有对象都是“第一类的”,这意味着使用标识符命名的所有对象具有相同状态,于是,能够命名所有对象都可以直接当数据进行处理
(5).所有序列(所有非负整数的有序集合)都支持迭代
(6).所有序列都支持的操作和方法:

(7).可变序列的操作

三、Python的表达式和语句

表达式:由一个或多个操作数以及操作符所组成的序列
语句:用来实现的操作,常见的操作有声明变量
1、python中的常用的表达式操作符:
x * y , x /y , x+y , x-y , x//y, x%y
逻辑运算:
x or y, x and y, not x
成员关系运算:
x in y , x noy in y
对象实例测试
x is y x not is y
比较运算:
x < y,x > y x <= y,x >= y,x == y,x != y
位运算:
x|y x& y x^y x<<y,x>>y
一元运算:
-x,+x,~x
幂运算:
x ** y
索引和分片
x[i],x[i:j],x[i:j:stride]
调用
x(….)
取属性:
x.attribute
元组:(….)
序列: […]
字典:{…}
三元选择表达式:x if y else z
匿名函数: lambda args:expression
生成器函数发动协议: yield x
运算优先级:
(….),[….],{…..}
s[i],s[i:j]
s.attribute
s(….)
+x,-x,~x
x**y
* / // %
+ —
<< >>
&
^
|
< <= > >= == !=
is not is
in not in
not
and
or
lambda
2、语句:
赋值语句
调用
print:打印对象
if/elif/else:条件判断
for/else:序列迭代
while/else:普通循环
pass:占位符
break:
continue
def
return
yield
global:命名空间
raise:触发异常
import:
form:模块属性访问
class:类
try/except/finally:捕获异常
del:删除引用
assert:调试检查
with/as:环境管理器
赋值语句:
隐式赋值:import,from,def,class,for,函数参数
元组和列表分解赋值,当赋值符号(=)的左侧为元组或列表时,python会按照位置把右边的对象和左边的目标 自左向右逐一进行配对,个数不同时会出异常,此时可以进行切片处理
多重目标赋值
增强赋值:+=,-=,*=,/=,//=,%=,
3、条件测试:
3.1 if 条件测试表达式
python中的真假:
1.任何非0数字和非空对象都为真
2.数字0、空对象和特殊对象None都为假
3.比较合相等测试会递归地应用于数据结构中
4.返回值为True或False
组合条件测试
X and Y:与运算
X or Y :或运算
not x: 非运算
A=X if Y else Z
if Y:
A=X
else:
A=Z
3.2while语句:
while bool_expression:
while_suite
else:
else_suite
break:跳出最内层的循环
continue:跳到所处的最近层循环的开始处
pass:点位语句
else代码库:循环正常终止才会执行,如果循环终止是由break跳出导致的,则else不会执行
while true:死循环
3.3 for语句
for exprssion in object:
while_suite
if boolean_esprssion2:contine
if boolean_esprssion3:break
else
else_suite

四、文件对象:

文件都是字节序列

mode: r w a r+ w+ a+
b表示已二进制模式打开文件
rb
wb
ab
rb+
wb+
ab+
[bufsize]缓存:
0表示不使用缓存
负数表示使用系统默认的缓存
1表示使用缓存
整数表示使用大小的缓冲区
file.seek(offset[whence])
whence:起点
0:从文件头
1:从当前位置
2:从文件尾
offset:偏移量
文件系统模块:os
目录:

文件:

路径管理:

对象持久存储
pickle

marshal

五、python的正则表达式:

元字符

match对象:
可以指定起始位置,结束位置,匹配到的字符等
search只返回第一次匹配到的结果
re.search:返回一个macth对象
flags:
I或IGNORECASE:忽略字符大小写
M或MULTILINE:多行匹配
A或ASCII:仅执行8位ASCII码匹配
U或UNICODE:

六、Python函数

return返回值类型:
效果:只能返回一次值,终止函数的执行
无return 默认 None; return返回值:如果只有一个则返回本身,多个值则为元组形式
参数传递形式
位置参数:从左向右
关键字参数:按关键名称匹配
混用上面两种方式时,所有位置参数,所有的关键字参数
定义函数时使用默认参数:有默认值的参数
混用有默认和无默认值的参数时,无默认值的应该放在前面
调用函数时使用可变参数要求:
使用*:收集位置参数

使用**:收集关键字参数

python闭包:闭包叫lexical closure
函数中使用yield,会返回一个生成器对象
装饰器:
1.装饰器本身是一个函数 ,用于装饰其他函数
2.功能:增强被装饰函数的功能
装饰器一般接受一个函数对象作为参数,
使用@调用函数

递归:
递归需要边界条件,递归前进段和递归返回段
函数的设计规范
耦合性
1.通过参数接受输入,已经通过return产生输出以保证函数的独立性
2.尽量减少使用全局变量进行函数间通信
3.不要再函数中修改可变类型的参数
4.避免直接改变定义在另外一个模块中的变量
集合性
1.每个函数都应该有一个单一的、统一的目标
2.每个函数的功能都应该相对简单
更多内容可见:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

原创文章,作者:nene,如若转载,请注明出处:/91022

发表评论

登录后才能评论

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达直属  万达娱乐招商QQ  万达娱乐  万达招商  guoqibee.com  guoqibee.com  华宇招商  万达注册  万达主管QQ  万达开户