一 函数
1 def
格式①:
def a():
print(123)
a()
# 123
格式②:
def a(c,d)
b = c+d
return b
print(a(5,6))
# 11
2 参数
2.1 传递多个参数
def a(*d)
return d
print(a('luck','jack','iop'))
# luck jack iop
2.2 任意数量关键数实参
def a(j,k,**l):
l['pw'] = j
l['us'] = k
return l
print(a(1,2,jk=53,bg=64))
# {'jk': 53, 'bg': 64, 'pw': 1, 'us': 2}
解释:**l
想当于创建了个字典,函数里就是给字典添加内容,同时关键词参数也是在给字典添加内容
3 导入
3.1 导入整个文件
文件1:
名字:name.py
def a(j,k,**l):
l['pw'] = j
l['us'] = k
return l
def b():
print(567)
文件2:
名字:daoru.py
import name
print(name.a(1,2,jk=53,bg=64))
# {'jk': 53, 'bg': 64, 'pw': 1, 'us': 2}
3.2 导入单个函数
继承上面的代码:from name import a
解释:这样a函数就唯一的被调用进来了
3.3 导入内容起别名
继承上面的代码:
from name import a as c
import name as c
解释:Ⅰ导入函数这个就可以用c这个名字代替a;Ⅱ导入文件这个就可以用c这个名字代替a
4 常用函数
4.1 lambda
解释:python中的一类特殊的定义函数的形式
实例:
1.p = lambda x,y:x+y ;print(p(4,6))#10
2.
a=[('b',3),('a',2),('d',4),('c',1)]
print(sorted(a,key=lambda x:x[1]))
#[('c', 1), ('a', 2), ('b', 3), ('d', 4)]
4.2 global
解释:在一个函数里面想要访问外面写的全局变量可直接访问,但是想要修改它的值,需要先声明其为全局变量global
,否则不能修改其值(函数中定义修改的都是局部变量)
格式:
a = 5
def 函数():
global a
举例:
number = 100
def bb():
# global number
number=101
print(number)
bb()
# 101
二 类和面向对象
1 初始化
解释:此def __init__(self)
在实例化后将会被自动执行
class Ajk():
def __init__(self):
self.name=5
def a(self):
self.gog=6
def b(self):
print(self.name)
def ccc(self,nk):
print(nk)
cc = Ajk()
cc.b()
# 5
注意:
1._inif_ (self)
定义上class类默认调用运行;变量前加self
之后,这个变量可供类中所有方法使用;类内调用该参数需要加self
,外部调用不需要
2. 类名用大写字母
3. 括号中的self
必须添加,因为python在运行类时会默认传入实参self
4.类名后传入的参数,默认给_init_(self,canshu)
2 修改属性的值
2.1 直接修改__init__()
的值
class A:
def __init__(self):
self.name =5
def a(self):
name = self.name
print(name)
aa = A()
aa.name=100
aa.a()
#100
注意:修改时直接类.变量
;因为调用类默认调用def __init__(self)
2.2 赋值修改普通函数
的值
class Ajk():
def ccc(self,nk):
print(nk)
cc = Ajk()
cc.ccc(5)
# 5
cc.ccc(20)
# 20
2.3 修改访问在类里面的值
class Aadadadad():
a = 55
def __init__(self):
self.a =66
print(Aadadadad.a)
Aadadadad.a=77
print(Aadadadad.a)
# 55
# 77
3 继承
3.1 继承def _init_(self)
情景①
解释:子类里面没有写def _init_(self)
,默认也就把父类的def _init_(self)
也就继承了,不用添加super().__init__()
class Ajk():
def __init__(self):
self.name=16
def b(self):
print(5)
class Bjk(Ajk):
def cc(self):
print(self.name)
bbb = Bjk()
bbb.cc()
# 16
情景②
解释:子类里面写了def _init_(self)
,这时候父类的def _init_(self)
就被覆盖,如果还想用父类的def _init_(self)
就需要写上super()_init_()
来继承,切记参数位置需要填写且保持一致
class Ajk():
def __init__(self):
self.name=16
def b(self):
print(5)
class Bjk(Ajk):
def __init__(self):
super().__init__()
def cc(self):
print(self.name)
bbb = Bjk()
bbb.cc()
# 16
3.2 A类的属性 调用 B类的函数
class A:
def __init__(self,name):
self.name =name
def a(self):
name = self.name
print(name)
class B:
def __init__(self):
self.age=A(150)
bb = B()
bb.age.a()
# 150
解释:每当B()
被调用都会创建A
类的实例并且传入值
4 装饰器
4.1 @property
用途:
① 将函数方法转化为属性(无需加括号一般去调用)
class B:
def __init__(self):
self.name = 55
@property
def c(self):
return self.name
bb = B()
print(bb.c)
# 55