1.多值参数函数
def 函数名(*args , **kwargs):
.......
多值参数函数顾名思义能够传入多个参数,args表示传入的元组,kwargs表示传入的字典
def function(*args, **kwargs):
print(args)
print(kwargs)
return
function(1, 2, 3, 4, 5, 6) # 只是传入元组数据 function(name="sddd", age=18) # 传入字典数据 function(1, 2, 3, 4, 5, 6, name="sddd", age=18) # 传入元组与字典数据
字典数据要保持key=xxx的形式,不然函数会默认为是元组
1 function(1, 2, 3, 4, 5, 6, { "name": "sddd", "age": 18 }) # 此时传入的都是元组数据
那么如何通过定义的元组和字典来进行传值呢
这里采用拆包方式
num = (1, 2, 3, 4)
people = {"name": "sddd",
"age": 18 }
function(*num, *num, **people)
可以看到变量前加上*就表示是元组,**表示字典,这样能够将传入的元组、字典自动拆成一个个参数,同时还不会导致将字典放到元组中
多值参数在定义一些运用比较广泛的函数定义上有着巨大的优点,同时很多大牛的框架上也会用到这些方法
2.类
1 class Gun: 2 3 def __init__(self, type, count): 4 """初始化类的属性""" 5 6 self.type = type 7 self.count = count 8 return 9 10 def __str__(self): 11 """重写print(对象)的打印效果""" 12 13 return "%s 有 %d个子弹!" % (self.type, self.count) 14 15 def attack(self): 16 """射击""" 17 18 self.count -= 1 19 print("哒哒哒。。。") 20 return 21 22 def rebuild(self, num): 23 """装填子弹""" 24 25 self.count = num 26 print("子弹已装满") 27 return 28 29 30 class Soldier: 31 32 def __init__(self, name): 33 """初始化士兵类数据""" 34 35 self.name = name 36 self.gun = None 37 return 38 39 def __str__(self): 40 """重写print(对象)的打印效果""" 41 42 if self.gun is None: 43 return "%s没有枪" % self.name 44 else: 45 return "%s有%s" % (self.name, self.gun.__str__()) 46 47 48 49 def getGun(self,gun): 50 51 self.gun = gun 52 53 def attack(self): 54 """攻击""" 55 if self.gun is None: 56 print("%s还没装备武器" % self.name) 57 else: 58 self.gun.attack() 59 return 60 61 def rebuild(self, num): 62 """装填""" 63 if self.gun is None: 64 print("%s还没装备武器" % self.name) 65 else: 66 67 self.gun.rebuild(50) 68 return 69 70 71 gun = Gun("AK", 50) 72 73 sol = Soldier("TOM") 74 75 sol.getGun(gun) 76 77 sol.attack() 78 79 sol.rebuild(50) 80 81 print(sol) 82 83 print(gun)
这里简单的实现了士兵类与枪支类的操作
类定义时关键字class + 类名 + :
里面的方法与定义 函数的格式是一样的,在创建方法时,会默认有一个self参数,这个表示当前对象,不需要传入值
每个类中的方法都分为两种,一种是系统预留的,一种是自己创建的。预留的方法普遍以(_ _init_ _)两个下划线开始,两个下划线结束
下面列举几个简单的方法:
__init__(self):初始化方法,对象创建时默认调用
__str__(self):打印对象的信息,采用print(对象名)使用
__del__(self):删除对象,在对象生命周期结束时调用
在类中,初始化方法时创建类的数据类型,当然例子中创建的是公有的变量,私有变量需要加上两个下划线如:self.__name = name。注:python中的私有不是绝对的私有,可以强制调用
在方法中调用属性时,不能简单的通过名称访问,需要通过当前对象即self访问,格式self.xxxx
注意点:判断python对象是否为空时,采用xx is None来判断