1.Python : list1=[1,2,3] list2=list1[:] 表示新建了一个表
List3=list1 list3和list1相关联,如果 list1变 ,list3也变,而list2不会变。、
2.匿名函数:
Func_new=input(“请输入个匿名函数:”) input接受的是字符串
Func_new=eval(Func_new)
才可以接着调用
3.Python可变的数据类型:字典,列表,集合
Python不可变的数据类型:数字、字符串、元组。
a=100
def=test(num)
num+=num
Print (num)
Test(a)
Print (a)
结果为 200
100
如果输入的是可变数据
a=[100]
结果为[100,100]
[100,100]
num +=num 不等于num=num+num
如果上式num +=num 改为num=num+num
输出为[100,100]
[100]
- 类中的私有方法不能直接在外部调,只能在内部
私有方法表示:def __hanshuming:
举例:
Class dog:
def __seng_msg(self):
Print(正在发送)
Def send_msg(self,money):
if money>10000:
Self.__send_msg()
Sys.getrefcount()查看调用次数
5.调用
Class Dog:
Def bark(self):
Print(“汪汪叫”)
Class xiaotianquan(Dog)
##重写函数
Def bark(self):
Print(“狂叫”)
##第一种调用被重写的父类的方法
Dog.bark(self)
##第二种
Super().bark()
私有方法只能在父类中执行。
6.查看函数继承父类顺序的函数 .mro
7.面向对象的三要素,封装,继承,多态。
封装:把全局变量和函数封装起来变成对象。
继承:子类继承父类功能
多态:定义的时候不确定调用那个功能,而是在使用时确定。
8.类属性,实例属性
9类方法
Class Game:
#类属性
num=0
#实例方法
Def init(self)
Self.name=laowang
#类方法
@classmothod
Def add_num(cls)
Cls.num=100
game=Game()
Game.add_num()第一种
game.add_num()第二种
9.静态方法
10.类中添加静态方法
Class A:
@staticmethod
Def printmenu() #里面可以不用加self
Print(“开始游戏”)
总结对类属性操作用类方法,对实例属性方法操作用实例方法,都不操作用静态方法。
11.创建类之后首先调用__new__方法,作用创建对象,在调用__init__方法,作用初始化,最后调用__del__方法,作用删除类。
12.异常处理:
Try:
#错误的代码
Except 错误类型名字:
或者
Except Exception as act:(Exception指所有类型异常的统称)
Print(act)
13.重新导入模块
先导入模块,在修改模块内容,在调用,模块功能不会改变,需要重新导入模块。
From imp import *
Reload (test)
14 深拷贝与浅拷贝
浅拷贝:a=15
b=a
a和b的地址是一样的。
深拷贝:
导入copy模块
Import copy
a=15
b=a.copy.deepcopy(a)
a和b的地址不一样。
15 使用copy模块的copy功能,他会根据copy的数据类型的不同有不同的处理方式。
16.私有属性
Class TEST:
Def init(self):
Self.__num=100
t=TEST()
t.__num是不允许使用的,实质上是改了名字的,改成了t._TEST__num
16.property的用法
class TEST:
def init(self):
self.__num=200
def setnum(self,newnum):
self.__num=newnum
def getnum(self):
return self.__num
num=property(getnum,setnum)
t=TEST()
t.num=100
print(t.num)
输出为 100
修改了私有属性
17 闭包函数
定义一个函数,在函数里面在定义一个函数,这个函数会用到外面函数的变量,并且里面这个函数会在外面的函数作为返回值
18装饰器
def w1(func):
def function():
print(“正在验证”)
func()
return function
@w1
def f1():
print(“f1”)
@w1
def f2():
print(“f2”)
####f1=w1(f1)
f1()
装饰器在调用之前就已经执行了,在@w1的就已经执行,把f1装进w1了。
19给实例属性动态添加方法
import types
class person:
def init(self,newname):
self.name=newname
def eat(self):
print("%s正在吃"%self.name)
p1=person(“laowang”)
p1.eat=types.MethodType(eat,p1)
p1.eat()
20限制给实例添加属性,用__slot__方法
class person:
slots = (“name”)
p=person()
p.name=“老王”
21.type也可以创建类
比如type(“类名”,(继承的父类),{属性})