forked from vipstone/python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path函数和类.md
160 lines (124 loc) · 3.81 KB
/
函数和类.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# 函数和类 #
----------
**函数**
函数(有些语言称之为方法)是组织好的,可以复用的功能代码段。
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)
```
> 注意:super().__init__(参数)初始化父类构造函数不能省。
----------
下一节:[模块](模块.md)