模块
time模块——时间
import time
time.sleep(secs)
random模块——随机生成数字
random.randint(a,b)
import random
a = random.random()
print(a)
a = random.randint(0,100)
print(a)
a = random.choice('abcdefg')
print(a)
a = random.sample('abcdefg', 3)
print(a)
items = [1, 2, 3, 4, 5, 6]
random.shuffle(items)
print(items)
**random.choice()**函数
- random.choice(sequence):从序列中获取一个随机元素
random.random()
random.uniform(a,b)
random.randrange(start, stop, step)
- 从指定范围内,按指定基数递增的集合中 获取一个随机数
random.shuffle(AB)
random.sample(sequence, k)
函数
定义函数
def 函数名(参数):
函数体
return 语句
def math(x):
y = 3*x + 5
return y
调用函数
def math(x):
y = x ** 2 + x
return y
a = math(20)
b = math(30)
print(a)
print(b)
参数类型
默认参数
def menu(appetizer, course, dessert = '绿豆沙'):
print('一份开胃菜:' + appetizer)
print('一份主食:' + course)
print('一份甜品:' + dessert)
menu('话梅花生','牛肉拉面')
print('------------------')
menu(course = '牛肉拉面', appetizer = '话梅花生')
print('------------------')
menu('话梅花生','牛肉拉面','银耳羹')
print('------------------')
menu('话梅花生','牛肉拉面','银耳羹')
不定长参数
- 格式:def 函数名(*参数)
- 参数返回值是元组类型
- 不定长参数可以接收任意数量的值
def menu(*barbeque):
for i in barbeque:
print('一份烤串:' + i)
menu('烤香肠', '烤肉丸')
menu('烤鸡翅', '烤茄子', '烤玉米')
try…except…语句
try:
...
except ***:
...
try: age = int(input('请输入一个整数:'))except ValueError: print('要输入整数噢')
python异常标准
异常名称 | 描述 |
---|
| | BaseException | 所有异常的基类 | SystemExit | 解释器请求退出 | KeyboardInterrupt | 用户中断执行(通常是输入^C) | Exception | 常规错误的基类 | StopIteration | 迭代器没有更多的值 | GeneratorExit | 生成器(generator)发生异常来通知退出 | StandardError | 所有的内建标准异常的基类 | ArithmeticError | 所有数值计算错误的基类 | FloatingPointError | 浮点计算错误 | OverflowError | 数值运算超出最大限制 | ZeroDivisionError | 除(或取模)零 (所有数据类型) | AssertionError | 断言语句失败 | AttributeError | 对象没有这个属性 | EOFError | 没有内建输入,到达EOF 标记 | EnvironmentError | 操作系统错误的基类 | IOError | 输入/输出操作失败 | OSError | 操作系统错误 | WindowsError | 系统调用失败 | ImportError | 导入模块/对象失败 | LookupError | 无效数据查询的基类 | IndexError | 序列中没有此索引(index) | KeyError | 映射中没有这个键 | MemoryError | 内存溢出错误(对于Python 解释器不是致命的) | NameError | 未声明/初始化对象 (没有属性) | UnboundLocalError | 访问未初始化的本地变量 | ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 | RuntimeError | 一般的运行时错误 | NotImplementedError | 尚未实现的方法 | SyntaxError | Python 语法错误 | IndentationError | 缩进错误 | TabError | Tab 和空格混用 | SystemError | 一般的解释器系统错误 | TypeError | 对类型无效的操作 | ValueError | 传入无效的参数 | UnicodeError | Unicode 相关的错误 | UnicodeDecodeError | Unicode 解码时的错误 | UnicodeEncodeError | Unicode 编码时错误 | UnicodeTranslateError | Unicode 转换时错误 | Warning | 警告的基类 | DeprecationWarning | 关于被弃用的特征的警告 | FutureWarning | 关于构造将来语义会有改变的警告 | OverflowWarning | 旧的关于自动提升为长整型(long)的警告 | PendingDeprecationWarning | 关于特性将会被废弃的警告 | RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 | SyntaxWarning | 可疑的语法的警告 | UserWarning | 用户代码生成的警告 |
类与对象
- 类:比如整数、字符串、浮点数等,不同的数据类型就属于不同的类
- 类有自己的属性和方法
- 类名要大写
- 实例:类的个例就叫做实例
- 对象*:对象等于类和实例的集合:即类可以看作是对象,实例也可以看作是对象,比如列表list是个类对象,
[1,2] 是个实例对象,它们都是对象。
类的创建
class 类名:
赋值语句
def 方法名(self):
执行过程
class Computer:
screen = True
def start(self):
print('电脑正在开机中...')
类的调用
调用语法
实例名.属性
实例名.方法()
class Computer:
screen = True
def start(self):
print('电脑正在开机中……')
my_computer = Computer()
print(my_computer.screen)
my_computer.start()
self
在方法内调用类的属性
self.属性名
class Chinese:
name = '吴枫'
def say(self):
print(self.name + '是中国人')
person = Chinese()
person.say()
在类方法调用其他方法
self.方法名()
class Chinese:
def greeting(self):
print('很高兴遇见你')
def say(self):
self.greeting()
print('我来自中国')
person = Chinese()
person.say()
初始化方法
- 当每个实例对象创建时,该方法内的代码无须调用就会自动运行
class Chinese:
def __init__(self):
print('很高兴遇见你,我是初始化方法')
person = Chinese()
- 利用这个特性,在编写习惯上,我们会在初始化方法内部完成类属性的创建,为类属性设置初始值,这样类中的其他方法就能直接、随时调用
class Chinese:
def __init__(self, name, birth, region):
self.name = name
self.birth = birth
self.region = region
def born(self):
print('{}出生在{}'.format(self.name,self.birth))
def live(self):
print('{}居住在{}'.format(self.name,self.region) )
person = Chinese('吴枫','广东','深圳')
person.born()
person.live()
print(person.birth)
面向对象编程:类的创建和调用
面向过程编程:函数的创建和调用
类的继承和定制
类的继承
- 让子类拥有了父类拥有的所有属性和方法
- A类为B的子类,B为A的父类
语法
class Chinese:
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese):
pass
yewen = Cantonese()
print(yewen.eye)
yewen.eat()
class Chinese: 在运行时相当于class Chinese(object): 。而object,是所有类的父类
验证类
class Chinese:
pass
class Cantonese(Chinese):
pass
gonger = Chinese()
yewen = Cantonese()
print('\n验证1:子类创建的实例同时也属于父类')
print(isinstance(gonger,Chinese))
print(isinstance(yewen,Chinese))
print('\n验证2:父类创建的实例不属于子类。')
print(isinstance(gonger,Cantonese))
print('\n验证3:类创建的实例都属于根类。')
print(isinstance(gonger,object))
print(isinstance(yewen,object))
类的多层继承
- 继承不仅可以发生在两个层级之间(即父类-子类),还可以有父类的父类、父类的父类的父类……
class A(B)
class C(B)
类的多重继承
- 语法为class A(B,C,D)
- 一个类,可以同时继承多个类,**语法为
class A(B,C,D)**: 。假设我们将“出生在江苏,定居在广东的人”设为一个类Yuesu,那么,它的创建语句则为class Yuesu(Yue,Su) - 就近原则:越靠近子类(即越靠左)的父类,越亲近,越优先考虑。子类调用属性和方法时,会先在靠左的父类里找,找不到才往右找。
class Su:
born_city = 'Jiangsu'
wearing = 'thick'
def diet(self):
print('我们爱吃甜。')
class Yue:
settle_city = 'Guangdong'
wearing = 'thin'
def diet(self):
print('我们吃得清淡。')
class Yuesu(Yue,Su):
pass
xiaoming = Yuesu()
print(xiaoming.wearing)
print(xiaoming.born_city)
xiaoming.diet()
类的定制
类的定制,不仅可以让子类拥有新的功能,还能让它有权修改继承到的代码
class Chinese:
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
class Cantonese(Chinese):
native_place = 'guangdong'
def dialect(self):
print('我们会讲广东话。')
yewen = Cantonese()
print(yewen.eye)
print(yewen.native_place)
yewen.eat()
yewen.dialect()
class Chinese:
def land_area(self,area):
print('我们居住的地方,陆地面积是%d万平方公里左右。'% area)
class Cantonese(Chinese):
def land_area(self, area, rate = 0.0188):
Chinese.land_area(self, area * rate)
gonger = Chinese()
yewen = Cantonese()
gonger.land_area(960)
yewen.land_area(960)
|