函数和类
函数
函数(有些语言称之为方法)是组织好的,可以复用的功能代码段。
python定义函数的格式:
def 函数名(参数):
函数体
基础示例如下:
# 自定义数值相加函数
def mySum(x, y):
return x+y
print(mySum(4, 4)) # output:8
print(mySum(3, 1)) # output:4
传递可变对象
传递可变对象指的是传递了对象,在函数体被重新赋值后原来的值也发生了改变,示例如下:
def updateList(ls):
ls.append("laowang")
return ls
list = ["hello"]
updateList(list)
print(list)
# 输出:['hello', 'laowang']
原来的列表的值也被修改了,如果不想改变原来值的情况下,可使用[:],传递切片副本,示例如下:
def updateList(ls):
ls.append("laowang")
return ls
list = ["hello"]
updateList(list[:])
print(list)
# 输出:['hello']
缺省参数
缺省参数表示调用函数的时候是可以不传递当前参数值,而使用默认参数值的,示例如下:
def showInfo(name, sex="男", age=18):
print("姓名:%s\t性别:%s\t年龄:%d" % (name, sex, age))
showInfo(name="老王") # 输出:姓名:老王 性别:男 年龄:18
showInfo(name="老王", age=19) # 输出:姓名:老王 性别:男 年龄:19
注意:有默认值的参数一定要放在无默认值参数的后面。
指定参数名称
调用函数的时候,可以指定参数名称,从而用户可以不用关注调用参数的位置顺序,示例如下:
def showInfo(name, sex):
print("姓名:%s 性别:%s" % (name, sex))
showInfo(sex="男", name="老王") # 输出:姓名:老王 性别:男
注意:如果要指定参数的名称,那么所有的非缺省参数都必须全部指定参数名称,python不支持,部分指定参数名的使用方式。
不定参数
不定参数使用*参数名来表示,示例如下:
def doPrint(name, *list):
print(name)
for item in list:
print(item)
doPrint("老王", "你好") # 输出:老王 你好
doPrint("老王", "你好", "大家好") # 输出:老王 你好 大家好
同时存在缺省参数和不定参数示例:
def doPrint(name, age=18, *list):
print("姓名:%s 年龄:%d" % (name, age))
for item in list:
print(item)
doPrint("老王", 19, "你好", "世界")
# 输出如下:
# 姓名:老王 年龄:19
# 你好
# 世界
注意:不定参数任何情况下都要放在参数最后方。
类
python中用class关键声明类,推荐使用驼峰命名法,首字母大写。
python中的类格式:
class 类名():
def __init__(self,参数):
self.参数 = 参数
其他方法体
示例如下:
class Car():
def __init__(self, name):
self.name = name
def printInfo(self, color):
print("车型:%s 颜色:%s" % (self.name, color))
mycar = Car("福特")
mycar.printInfo("白色")
# 输出:车型:福特 颜色:白色
注意:构造函数为__init__(self,参数)此方法是不能省略的。
类继承,方法重写
类继承语法格式:
class 子类名称(父类名称):
类继承&重写方法,示例如下:
class Car():
def __init__(self, name):
self.name = name
def printInfo(self, color):
print("车型:%s 颜色:%s" % (self.name, color))
class WhiteCar(Car):
def __init__(self, name):
# 初始化父类构造函数
super().__init__(name)
def printInfo(self, mileage):
print("车型:%s 颜色:白色 行驶里程:%dKM" % (self.name, mileage))
wCar = WhiteCar("福特")
wCar.printInfo(1000)
# 输出:车型:福特 颜色:白色 行驶里程:1000KM
注意:super().__init__(参数)初始化父类构造函数不能省。