(1)运算符优先级:
assert() ——用于设置断点
这个关键字为“断言",当其后面的条件为假时,程序自动崩溃并抛出AssertionError的异常。
字符串str()、列表list()、元组tuple() 都属于序列。
(2)函数
- 函数定义
def myfunction() :
- 括号内部参数为“形参”,运用函数时定义的参数为“实参”。
- 函数文档 查看 xxx.__doc__,或者直接help(函数名)
- 关键字参数(调用函数时用关键字定义参数,从而防止参数顺序输入错误)
def function(name,words)
- 默认参数(调用函数不用关键字定义时,使用默认值)
def function(name = “小甲鱼”,words = “让编程改变世界”)
- 收集参数,参数前加*。不确定调用时到底是多少个实参用收集参数
def function(*params)
- 局部变量(函数内部定义的参数,变量。只在函数内部有效)
- 全局变量(函数外部的定义变量为。处处可用,包括函数内部)
上述二者即使同一个名字,也互相不影响,不相关。(存储地址不同)
- 与全局变量和局部变量相似,对于某一定义函数内部的函数定义,不可单独调用。
eg.
def Fun1(x)
def Fun2(y)
return x*y
return Fun2
>>>i = Fun1(8)
>>>type(i)
<class 'function'>
>>>Fun1(8)(5)
40
>>>Fun2(5)
Error
- 匿名函数——lambda 表达式:可省略函数定义过程,使代码更加精简
>>>g = lambda x,y :x+y
>>>g(3,4)
7
- filter()——过滤器
第一个参数为函数或者NONE,第二个参数,是将这里面所有参数用于函数计算,如果结果为TURE,返回为一个列表
>>>filter(lambda x:x%2,range(10))
[1, 3, 5, 7, 9]
- map()——映射
第一个参数为函数或者NONE,第二个参数,是将这里面所有参数用于函数计算,并将结果返回。
>>> map(lambda x : x%2,range(10))
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
(3)递归
与迭代不同,
思想:分而治之
缺点:运算时间较长
(4)字典/集合
字典:dict = {"key":"value" , "key":"value"}
集合:
>>>set = {1,2,3,4,5,5,4,3,2} 唯一!无序!(无法索引)
>>>set
{1,2,3,4,5}
(5)文件
打开文件:
open("file" , "打开方式“)
打开方式有:
r 只读(默认)、w 写入,会覆盖已存在的文件、x 如果文件存在,则报错、 a 写入,如果文件存在,则在末尾追加写入内容、
b 二进制打开、t 文本模式打开(默认)、...
文件对象处理方法:
f.close() 关闭文件
f.read(size) 按照字节读取,当未给定值或者给定负值时,读取剩余的所有字符,然后作为字符串返回。
文件指针,读取一次不关闭的话,指针指向末尾,第二次读入无内容。
f.seek(offset,from) 在文件中重新移动文件指针,从from(0代表起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.readline() 以写入模式打开,读取一行。如果文件存在,则在末尾追加
迭代读取每一行
for each_line in f:
print(each_line)
文件写入:(写入之前确定打开时,是以写入方式打开的!)
f.write(str) 写入字符串
f.writelines(seq) 写入字符串序列,seq应该是一个返回字符串的可迭代对象。
写完后关闭f.close
(6)异常处理
try - except 语句:
try:
检测范围
except Exception{ as reason }
出现异常(Exception)后的代码处理
eg:
try:
f = open("wenjianA.txt")
print(f.read())
f.close()
except OSError as ass:
print("文件出错了\n错误的原因是:" + str(ass))
==================== RESTART: C:/Users/Liuy/Desktop/test.py ====================
文件出错了
错误的原因是:[Errno 2] No such file or directory: 'wenjianA.txt'
try - finally语句:
try:
检测范围
except Exception{ as reason }:
出现异常(Exception)后的代码处理
finally:
无论如何都会被执行的内容(如将前面打开的文件关闭)
类:
定义:
eg:
>>>class Rectangle:
def __init__(self,x,y): ####对象初始化
self.x = x
self.y = y
def getPeri(self):
return (self.x + self.y)* 2
def getArea(self):
return self.x * self.y
实例化:
>>>rect = Rectangle(3,4)
>>>rect.getPeri()
14
>>>rect.getArea()
12
P42 魔法方法:
标志 两个下划线 “__”
类构造器:
__init__(self)
类析构器:
__del__(self) ##删除类
P43魔法方法:算数运算1
内置(工厂函数)
>>>type(len) ##查阅内置len类的类型
<class "type">
P44魔法方法:算数运算2
原魔法方法(内置)可以修改.
反运算 --- 增量赋值运算 --- 一元操作符 --- 类型转换
P45魔法方法:简单定制
import time as t
class Mytimer():
def __init__(self):
self.unit = ["year","month","day","hour","minute","second"]
self.prompt = "未开始计时!"
self.lasted = []
self.begin = 0
self.end = 0
def __str__(self): ###不用最后打印,直接返回字符串
return self.prompt
__repr__ = __str__
def __add__(self,other):
prompt = "总共运行了"
result = []
for index in range(6):
result.append(self.lasted[index] + other.lasted[index]
if result[index]:
prompt += (str(result[index]) + self.unit[index])
return prompt
#开始计时
def start(self):
self.begin = t.localtime()
print("计时开始...")
#停止计时
def stop(self):
self.end = t.localtime()
self.__calc()
print("计时结束")
#内部方法,计算运行时间
def __calc(self):
self.lasted = []
self.prompt = "总共运行了"
for index in range(6):
self.lasted.append(self.end[index] - self.begin[index])
if self.lasted[index]:
self.prompt += str(self.lasted[index]) + self.unit[index]
#为下一轮计时初始化变量
self.begin = 0
self.end = 0