python 是脚本语言,比较宽松,直接找资源,需要自己保证资源的正确性
0.变量的命名推荐是下划线方式
类的命名是大驼峰命名法
类中的属性是下划线
1.注意set中没有重复数据—可以通过转为set类型 快速完成去重功能
可以看H:\pythontest\test\集合间互转.py
x = [1,1,3,4,4,5,6]
y = set(x)
x = list(y)
print(x)
set 是{} ---->没有重复数据
list 是 []
tuple 是 () 元组
2.类的命名
类的命名是大驼峰命名法 属性 方法 小驼峰或_ 推荐用下划线
类 声明的多个 实例 -》对象的实例属性是各自存在独立的地址
实例方法是共用一份空间 类通过self来判断是哪个对象调用
3.// 地板除 (取最小)
7//3 —> 2
-7 // 3 —> -3
- *=
先算出右边的值 再计算左边的
eg:a*=5+3 ===> a=a*(5+3)
5.类的继承
class A(object):
pass
class B(A):
pass
class C(B,A): ### 这边必须是 B在A前,范围从小到大 **** A 可以不用写 推荐不写
pass
6.super() 相当于进入父类的入口, C继承B C中的super()继承B() #self的内存地址依旧是子类的,只是刷新了下数据
eg;super().__init__() 将self继承父类后的self #一般子类都要先写这个
print(self.属性) 打印继承父类后的xx属性值 #不写则子类中不能使用父类的属性方法 但是子类的实例对象是可以的
super().方法() 调用继承父类后的xx方法
若继承多个父类,按 print(C.__mro__) 结果的顺序
eg: class C(B,A) 则顺序为 B 》 A
7.类中self 省略情况 部分记录
1>类中申明的要写 eg:def getName(self):
2>刷新获取其他类的self要写 eg:A.__init__(self)
3>自刷新 或者是调用方法是不用写 eg: self.__init__() #注意自刷新作用就是把 self改为此类初始定义的时候即重置
8.类中self不要用其他字符替换(推荐) *换了语法未错,程序正常
9.一个类中的一个方法 中super()只能获取一层父类,写多个也是获取上一层父类
10.面向对象三大特性:封装、继承、多态 多态即 子类重写父类的一个方法实现多种执行结果
eg:class A(): class B(A):
def work(): def work():
pass pass
11.类中定义了同名的对象方法、类方法、静态方法时,调用方法会优先执行最后定义的方法
12.静态方法 @staticmethod 来修饰 ,不需要类对象或者实例对象(self)参数时用,好处有利于减少不必要的内存占用和性能消耗
建议用类直接调用 A.static_fang_fa()
13.类方法:用@classmethod来进行修饰 一般用cls做参数 用来访问类的私有属性 __xxx
建议用类直接调用 A.class_fang_fa()
14.类中只有类属性时 没有init声明的 对象属性时 ,类属性充当对象属性
15.文件操作 open close write read readlines readline
引用os rename remove mkdir getcwd chdir listdir rmdir
rename(a,b) 中文件名a 必须是能访问到 , 报错
文件名b 命名的目录与a不同时 则先改名再将文件移动到 b的目录
eg: rename('./a.txt','../b.txt') 将a.txt 改名为b.txt 并移动到上级目录
16.类中init建议加 super().init() 加上程序更加稳定
cause:因为__init__方法往往是用来对创建完的对象进行初始化工作,
如果在子类中重写父类的__init__()方法,
即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了,
so: 最好是先调用父类的这个方法也就是super().__init__() ,然后在添加自己的功能
eg: class A(object):
def __init__(self,xx,xxx):
super().__init__()
self.xx=xx
self.xxx=xxx
17.异常中 raise 作用抛出异常,,,,
raise 自定义内容 ---->抛出自定义内容 注:要有名字还是要系统定义的且它们应是Error或Exception类的子类 可以自己写个类继承Exception
raise ShortInputException(len(s), 3)
raise ---->不接东西则 抛出程序中的异常
18.模块化中 自己建的模块中 可以通过 name值来判断是否是被引用执行的
值为"__main__" 自己执行
值为被导入的模块名eg:test "test" 被引用执行
19.如果一个文件中有all变量,那么也就意味着这个变量中的元素,不会被from xxx import *
时导入 但是直接import是可以的 from xxx import xx
20. 不定长函数的参数
*xx xx为元组
**XXXX XXXX为字典
有字典参数是必须放在最后
eg: fun(a,b,*c,w=11,**d) w为带默认值的参数
21.在python中,值是靠引用来传递来的。 a = [1,2,3] b=a a.append(4)
结果a=[1,2,3,4] b=[1,2,3,4]
22.所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
可变类型有: 列表、字典、集合 做全局变量时 **不需要加global cause:引用地址
不可变类型有: 数字、字符串、元组 做全局变量时需要加global
23.字典的常见操作
dict={"name":"zhangsan",'sex':'m'}
len(dict)
dict.keys()
dict.values()
dict.items()
dict.has_key('name')==>'true' **python3取消了
24. 100 只要1个字节就能存放 1个字节最大数是255 1111 1111 8个位为一个字节
25.匿名函数帮助字典排序
stus=[
{"name":"zhangsan","age":18},
{"name":"lisi","age":19},
{"name":"wangwu","age":16}
]
stus.sort(key=lambda x:x["name"])
26.定义一个元组必须是 (1,)
否则b=(1)就是 数学运算 1 type(b)---->int
27.字符串倒置 用 str_[::-1]
28.read(8*1024) 一次读8k
29.a=’[1,2,3,4,5]’ 转化为list 必须是eval(a)
不能直接用list(a)
30. 尽量少的类 尽量少的对象
31.子类C调用父类A的方法show
1.A.show(self) #能指定具体的父类,比如多层继承
2.super().__init__() #只能3用 更加mro排序最近的一个父类
3.super(C,self).__init__() #兼容2和3
32.实例对象可以访问类属性 类对象也可以访问类属性(但是类对象更安全)
实例对象不可修改类属性值,类对象可以修改类属性
33.一般用 指定异常
34.文件.file 可以看到模块的目录 random._file
35.模块搜索路径 import sys sys.path
36. and 获取到第一个假值 或者 最后一个真值
or 获取到第一个真值 或者 最后一个假值