Python基础笔记(三)

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")

猜你喜欢

转载自www.cnblogs.com/CoderWayne/p/10456415.html