一、python简介
python是一门脚本语言,更是解释性语言。特点:简洁,跨平台。
解释性语言和编译型语言的区别
二、python数据类型
python的五个数据类型
python有五个标准的数据类型:数字,字符串,列表,元组,字典。其中,元组,列表,字典属于结构数据类型。
2.1 字符串----string
#字符串类型
str(123)
a = "123"
对于字符串的操作有:转义字符串(换行符,制表符,回车等);字符串运算(+,*);字符串处理函数;格式化字符串%c
,%d
,%s
等等
2.2 数字—numbers
数字类型包括:整型 int
,浮点型float
,长整型(也可以代表八进制和十六进制)long
,复数complex
.
2.3 列表—list
列表list
是python中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)
2.4 元组—tuple
元素tupe
可以看成是一种特殊的列表,与列表不同的是元组一旦建立就不能改变。既不能改变其中的数据项,也不能添加和删除数据项。因此,想让一组数据不能被改变就把它们放入到一个元组中即可,并且任何企图修改元组的操作都会发生错误。
2.5 字典—dictionary
字典dict
是除列表以外Python之中最灵活的内置数据结构类型,字典中每个成员是以 “键:值” 对的形式存在的。与列表的不同在于字典是无序的,其成员位置只是象征性的,在字典中通过键来访问成员,而不能通过其位置来访问成员。
三、python的逻辑运算符、逻辑操作符、比较运算符
3.1 逻辑数据类型
True 和 False
3.2 操作符
and,not,or,比较运算符(==,>,!= ,<=), is 和 is not
四、控制语句和执行流程
4.1 if
if语句
a = 3
b = 4
if a==b:
print("相等")
if ,elif 语句
a = 3
b = 4
c = 5
if a == b:
print("a=b")
elif a == c:
print("a=c")
else:
print("a不等于b也不等于c")
4.2 for循环
python中的循环语句
for + else 用法
for + break/continue 语句
for + range() 函数
for + 内置迭代函数,如
编号迭代enumerate()
,
排序迭代sorted()
,
翻转迭代reversed()
,
并行迭代 zip(seq1,seq2)
4.3 while循环
python只有while循环,没哟dowhile循环
五、函数以及变量
5.1 函数
(1)自定义函数:def(seq):
设计内容有:函数的声明、函数的调用、参数的传递。
可变量参数的传递:
(*tp1)
:一般来说带星号的参数应放在最后。当代星号的参数放在最前面是,仍然可以正常工作,但调用后面的参数必须以关键字参数方式提供,否则会营其后的位置参数无法获取值而引发错误。
(**tp1)
:收集不定数量的关键字参数(如字典)
(2)匿名函数: lambda
.
lambda可以用来创建匿名函数,也可以将匿名函数赋给一个变量供调用,它是python中一类比较特殊的声明函数的方式,lambda来源于LISP语言。
import math
s = lambda x,y: math.sqrt(x * y)
a = s(2,3)
print(a) #结果为6
(3)内建函数
如map(seq)
5.2 变量
内置作用域:python预先定义的
全局作用域:所编写的整个程序内
局部作用域:某个函数内部(如果要在函数中使用函数外的变量,可以在变量名前使用globe
关键字)
六、类
面向对象以及结构化开发方法的区别
使用类是一种面向对象的编程方式。类是对象的实例化。
内容包括:
(1)定义类;
(2)使用类;
(3)类的属性;
类的属性分为:实例属性 和 类属性
class demo:
calss_name = "demo # 类属性
def __init__(self,x=0):
self.x = x # 实例属性
(4)类的方法;
类的方法包括: 实例方法, 类方法, 静态方法
上述代码使用的是实例方法,其隐含调用参数是类的实例。
类方法隐含调用参数则是类
静态方法没有隐含调用参数。
静态方法定义时应使用装饰器@staticmethod
进行修饰,它是没有默认参数的;
类方法定义时,营使用装饰器@classmethod
进行修饰,必须有默认参数cls
。
静态方法和类方法的调用方式可以直接由类名进行调用,调用前也可以不实例化类,当然也可以用该类的任何一个实例进行嗲用。
class demoMthd:
@staticmethod #静态方法的装饰器
def static_mthd(): #静态类定义
print("调用了静态方法")
@classmethod #类方法的装饰器
def class_mthd(cls): #类方法定义,带默认参数cls
print("调用了类方法")
(5)类的继承
class ant: #定义父类
class flyAnt(ant): #定义子类,并继承父类
多重继承
class partA: #父类A
class partB: #父类B
class sub1(partA,partB): #定义子类sub1,先后继承了partA,partB
(6)方法重载
当子类继承父类时,子类如果阿星修改父类的行为,则使用方法重载实现,方法重载的基本方法是在子类定义一个和所继承的父类中需要重载方法同名的一个方法。
七、错误、异常、程序调试
7.1 错误
拼写错误、语法规范、缩进错误
7.2 异常的处理
(1)异常处理的基本语法
try:
#可能产生异常的语句块
except 异常名1:
#对异常1的处理
except 异常名2:
#对异常名2的处理
else:
#未触发异常,则执行该语句块
finally:
#始终执行该语句,一般为了达到释放资源等目的。
(2)python主要的内置异常以及处理
(3)手工抛出异常
用raise
手工抛出异常
def test_raise():
for i in range(5):
try:
if i == 2:
raise NameError
except:
print("raiseError")
print(i)
print("end")
#结果:0,1,raiseError,2,3,4
assert
语句
def test_assert():
for i in range(5):
try:
assert i < 2:
except:
print("assert_error")
print(i)
print("end")
#结果:0,1,assert_error,2,3,4
自定义异常类
7.3 调试程序
用pdb调试程序
import pdb
#方式一
pdb.run("""
代码块
""")
#方式二:
def fun(参数):
pdb.runcall(fun,参数)
7.4 测试程序
python标准库中,就有doctest和unittest模块可用于测试。很鸡肋,现在编译器那么好用,谁用这玩意?
需要值得注意的是,python的测试,不止包含错误的测试,还包括算法的测试(空间和时间)。
import testmode
doctest.testmode()
python -m doctest test.py