1. 循环与流程控制
(1) for
myList1 = ["A", "B", "C", "D"]
# 正序遍历
for item in myList1:
print(item)
# 倒序遍历
for item in reversed(myList1):
print(item)
myList2 = list(range(1,5))
# [1, 2, 3, 4]
# 等效于其它语言的for(i=0; i<4; i++)
for index in range(4):
myList2.append(myList1[index])
print(myList2)
# [1, 2, 3, 4, 'A', 'B', 'C', 'D']
# 按索引遍历
for index in range(len(myList2)):
print("索引", index, "对应的元素是:", myList2[index])
(2) while
myList = ["A", "B", "C", "D"]
index = 0
while index < len(myList):
print(myList[index])
index += 1
(3) break和continue
myList = list(range(10))
# 循环到5后跳出
index = 0
while True:
print(myList[index])
if index==5:
break
index += 1
# 循环遇到偶数略过,只打印奇数
for item in myList:
if int(item)%2==0:
continue
print(item)
2. 函数
# 定义一个空函数
def voidFun():
pass
# 定义一个求和函数
def getSum(x, y):
if not isinstance(x, (int, float)) and isinstance(y, (int, float)):
raise TypeError("参数'x'和'y'必须为数字")
return x + y
# 定义一个同时返回最大和最小值的函数
def getMinAndMax(x, y, z):
return min(x, y, z), max(x, y, z)
print(voidFun())
# None
print(getSum(3, 5))
# 8
multiValue = getMinAndMax(3, 9, 6)
print(multiValue)
# 多参数返回其实是一个Tuple
# (3, 9)
minValue, maxValue = getMinAndMax(3, 9, 6)
print(minValue, maxValue)
# 3 9
默认参数示例:
def enroll(name, age, sex="male", gold=0, country="China"):
print("name:",name,"\n",
"age:",age,"\n",
"sex:",sex,"\n",
"gold:",gold,"\n",
"country:",country)
enroll("wayne", 23)
# wayne 23 male 0 China
enroll("tina", 19, "female")
# tina 19 female 0 China
enroll("andy", 28, gold=15)
# andy 28 male 15 China
默认参数需要注意的一点是:默认值最好设置为不可变值(例如字符串或数字),否则会带来意料之外的状况:
def addItemToList(myList=[]):
myList.append("End")
print(myList)
# 提供参数连续调用2次是正常的,因为每次是以新的参数值传入
addItemToList([1, 2])
addItemToList([1, 2])
# [1, 2, 'End']
# [1, 2, 'End']
# 当使用默认参数连续调用2次时,第1次已经改变了默认参数指向的List
addItemToList()
addItemToList()
# ['End']
# ['End', 'End']
针对上面的例子,可以修改默认值为None
:
def addItemToList(myList=None):
if myList is None:
myList = []
myList.append("End")
print(myList)
可变参数示例:
def getSum(*numbers):
sum = 0
for i in numbers:
sum += i
print(sum)
return sum
getSum()
# 0
getSum(1, 2, 3)
# 6
myTuple = (1, 3, 5)
getSum(*myTuple)
# 9
关键字参数示例:
def enroll(name, age, **params):
if "gold" in params:
print('传了"gold"这个参数')
print("params:",params)
enroll("wayne", 23, gold=15, sex="male")
# 传了"gold"这个参数
# params: {'gold': 15, 'sex': 'male'}
限制关键字参数必须要以key=value
的形式提供参数,它的定义是以*
分隔:
def enroll(name, age, *, gold, country):
pass
# enroll("wayne", 23, 15, country="China") 未提供关键字将报错
enroll("wayne", 23, gold=15, country="China")
如果函数中间存在一个可变参数,在这个可变参数后面的参数自动会被认定为限制关键字参数:
def enroll(name, age, *skills, gold, country):
pass
# 未提供关键字"gold"将报错
# enroll("wayne", 23, "java", "python", 15, country="China")
enroll("wayne", 23, "java", "python", gold=15, country="China")