###############
基础语法
###############
name.title()大写
name.upper()
name.lower()
\t制表符 \n
strip()删除空格 rstrip()删除右面的空格 lstrip()
list.append()
list.insert(index,para)
del list[index]
pop()弹出 a=list.pop() 弹出最后一个元素 然后保存给a 也可以 list.pop(index)弹出任意一个值
list.remove(value) 只删除第一个出现的value
list.index(2)第一次出现2的索引 a.find('a')与index相同但是不适用于list
list.count(1)统计1出现的次数
list.sort()队列表永久排序 按字母排序或者按照从小到大排序 list.sort(reverse=True)则反向排序
sorted(list)序列暂时排序 返回序列排序 但是不改变原序列
list.reverse()反转列表
len() type(a)查看a的类型 a%b返回余数 a//b 整除 **平方 set(list(a)) 返回一个set其中所有元素不重复
range(n1,n2)前关后开 a=list(range(1,5))创建序列 min(a) max(a) sum(a)
tuple元组 元组中的元素不能像list被改变 适合储存不变的量 可以像list[index]一样显示元组中的值,也可以遍历for i in tuple:..,但是储存元组的变量可以被重新赋值:a = (2,3) >>重新赋值>> a = (3,6)
字典:
定义 a={} 赋值:以键值对的形式添加元素a['color']='yellow',a['pints']=5 删除也是以键值对的形式del a['color']
遍历字典中的所有键值对:for key,value in a.items(): 遍历所有键:for key in a.keys(): 遍历所有值:for value in a.values(): 其实 .keys() .values()不仅可以用于遍历 他们返回的是字典所有的键、值
字典中可以嵌套字典 列表等 当然列表里也能存储字典,都是互相嵌套,定义的时候要保持格式。
input a = input("message") 从屏幕输入 返回值是字符型 如果需要返回数字 则调用int(a)返回整数float(a)返回浮点数
######################
深浅复制:
list a
b = a 为浅复制:无论改变a b哪一个,两者同时改变,因为内存id相同。
id(a) id(b)查看id
b = a[:]则为深复制,但是深度同copy.copy()。
也可以调用方法:
b = copy.copy(a)为深复制,但是当a=[1,2,[4,...]]时,改变前两个元素对ab不影响,但是改变第三个元素时,两者同变化
因此可以调用b=copy.deepcopy(a)为绝对深复制。
#######################
条件循环:
and or 与 或
if a in list:检查a是否在list中 或者 if a not in list
布尔表达式:a = True b = False
if else if elif elif elif:else是一条包罗万象的语句,尽量不要以else结尾,以防止引入恶意的结果
a=[] if a: 检查列表是否为空
while condition: do...
state = True
while state:
if():
do 111
###此处可以使用continue返回循环 跳过该循环内下面的语句
print("the fucking day!")
elif (xx==oo):
state=False 退出while ###也可以使用 break强制退出循环
#######################
函数:
定义时参数:形参 调用时参数:实参 定义时无赋值,则描述为位置实参 有赋值则描述为关键字实参。
定义函数形参时,等号左边的所有字符串不需要“”声明。
定义函数时,有初始值的形参要放在后面,以空字符‘’作为形参初始值则在调用函数时,该形参对应的实参可有可无,更加灵活。
在函数中对任何列表的修改都是永久性的,有时候为了避免列表被修改,可以将列表的副本list[:]传递给函数。
函数的参数可以有各种类型:
如果需要传递任意数量的位置实参,则:def make_pizz(*toppings) *toppings将使函数创建一个名为toppings的空元组,用于存储除声明参数以外的所有参数。
如果需要传递任意数量的关键字实参,则:def make_pizz(**toppings) **toppings将使函数创建一个名为toppings的空字典,用于存储除声明参数以外的所有关键字参数。使用:make_pizz(aa,bb='hh',cc='kk') 在函数中bb='hh',cc='kk'将以字典的形式存储。在函数中调用topping字典中的值跟正常使用字典中的值的方法是一样的。
#######################
类:
定义类:
类名用驼峰 方法实例用小写加下划线
class Dog():
def __init__(self,a,b..):#初始化类属性,以self为前缀的变量可供类中所有方法使用
self.a = a
self.b = b
self.name = 'happy'#可以给属性指定默认的值
def sit(self,x,y): #定义类方法
......
self.name = 'sad' #可以在方法中改变属性的指定默认值
my_dog = Dog('guaiguai',10) #使用类的实例并在实例中改变属性的指定默认值
my_dog.name = 'normal'
类的继承:
class Husky(Dog):
def __init__(self,a,b..): #首先初始化父类的属性
self.a = a
.....
super().__init__(h,i,j...):#再初始化子类的属性
self.IQ = 0 #注意此处缩进
def Erha(self,l..):
print("zhenaocanwanyi!")
子类将继承父类所有的方法,此外还有自己的方法,调用方式都是HUsky.method(),如果父类中的方法并不适用子类,那么在子类中重新定义同名方法,编写适用于新类的方法即可,程序将默认识别子类同名方法,忽略父类中的该方法--在调用子类时。
随着添加元素的增多,属性和方法的清单将越来越长,可以将某些元素单独分类出来组成新的类,然后将新类别作为原来大类的一个属性,这样就可以:Class1.Class2.methods()
#############################
文件和异常
打开文件:
filename = '/home/xp/nvidia.txt' #绝对路径 #默认先从相对路径开始搜索 windows r'\home\xp....'
with open(filename) as f:
contents = f.read() #read方法以字符串的形式返回文件的整个内容
print(aontents.rstrip())
lines = f.readlines() #返回的是文件的每一行,以列表的形式存储 line = f.readline()每次读一行,依次向下读
with open(..) 方法读取的内容都是字符串形式,如果为数字需要转换。
写入文件:
with open('/home/../filename.txt','w') as f: #文件不存在则创建一个,默认是r只读、w写入(覆盖)、a写入(附加)、r+读写、
f.write(".......\n")
f.writw("*******\n")
存取文件:
先打开再存储或者提取
import json
import pickle
filename = 'name.txt'
data = dataset
存:
with open(filename,'w') as f:#以写作的模式打开 'wb'二进制模式写入json数据通常以文本形式存储人可读pickle常是二进制文件。
json.dump(data,f)
pickle.dump(data,f)
取:
with open(filename) as f:
json.load(f)
pickle.load(f)
异常:
当发生让Python不知所措的错误时,它将会创建一个异常对象。可以使用:
try:
sentence
except ZeroDivisionError:
print something or install some dependences
else:
do something if try-sentence is passed
或者:
try:
with open(...) as f:
sentences
except FileNotFoundError: 或者 except (RuntimeError, TypeError, NameError):
pass #不显示任何错误
except IOError:
lalallal
except IOError as e: print(......:e)
else:
do something