# 这种情况不算是有多个 return 语句# def tes():# return 1# return 2# 一般情况下多个 return 语句是搭配分支语句/循环语句的# 用来判断 num 是不是奇数defisOdd(num):
if num % 2 == 0:
returnFalseelse:
returnTrueprint(isOdd(10))
print(isOdd(19))
2. 一次返回多个值:用逗号分隔,接收时用多个变量接收 (无需接收的用 _ 忽略)
# 写一个函数,返回平面上的一个点# 横坐标,纵坐标defgetPoint():
x = 10
y = 20return x, y # 可以返回两个值# a, b = getPoint() # 接收所有返回值# 如果只想用其中一个可以使用 _ 占位
_, b = getPoint() # 忽略 x,只接收 y
(4)变量作用域
变量的作用域决定了'变量能在哪些地方使用',核心规则:
局部变量:函数内部定义的变量,仅在函数内部生效 (出了函数就失效);
全局变量:函数外部定义的变量,函数内部可访问,但 修改时需要用 global 声明;
同名变量:不同作用域可存在同名变量 (本质是不同变量,互不影响)
x = 10deftest():
x = 20print(f'函数内部:{x}')
test()
print(f'函数外部:{x}')
x = 10# 全局变量在函数里也可以使用# def test():# print(f'x = {x}')# # test()# 使用这个函数,把全局变量 x 给改成 20!deftest():
global x
x = 20
test()
print(f'x = {x}')
1.3 函数的进阶用法(嵌套 + 递归)
(1)链式调用:把一个函数的返回值,作为另一个函数的参数
defisOdd(num):
if num % 2 == 0:
returnFalsereturnTruedefadd(x, y):
return x + y
# result = isOdd(10)# print(result)# print(isOdd((add(5, 5))))
(2)嵌套调用:函数内部调用其他函数(包括自身)
deftest():
print("hello")
test() # 嵌套调用可以有很多层defa():
num = 10print("函数 a")
defb():
num = 20
a()
print("函数 b")
defc():
num = 30
b()
print("函数 c")
defd():
num = 40
c()
print("函数 d")
d()
# 写一个函数,来求 n 的阶乘 (n 是正整数)# def factor(n):# result = 1# for i in range(1, n+1):# result *= i# return result# 递归# n! => n * (n-1)!# 1! => 1deffactor(n):
if n == 1:
return1return n * factor(n - 1)
print(factor(5))
务必存在递归结束条件,比如 if n == 1 就是结束条件。当 n 为 1 的时候,递归就结束了。
# 5. 使用下标来访问列表元素
a = [1, 2, 3, 4]
print(a[2]) # 3# 6. 使用下标来修改列表元素
a = [1, 2, 3, 4]
a[2] = 100print(a)
# 7. 超出下标有效范围,就会出现异常# a = [1,2,3,4]# a[100] = 0# print(a)# Traceback (most recent call last):# ...# IndexError: list assignment index out of range# 8. 可以使用内建函数 len 来获取列表的长度 (元素个数),和字符串类似
a = [1, 2, 3, 4]
print(len(a))
# 9. Python 中的下标,其实还可以写成负数!!!# 例如写成 -1,其实等价于 len(a) - 1
a = [1, 2, 3, 4]
print(a[len(a) - 1]) # -1 就是倒数第一个元素print(a[-1])
循环遍历:
# 1. 使用 for 循环来遍历列表# 不会改变原来的数组# a = [1,2,3,4,5]# for elem in a:# elem = elem + 10# print(elem)# print(a)# 2. 使用 for 循环遍历,通过下标的方式# 会改变原来的数组# a = [1,2,3,4,5]# for i in range(0, len(a)):# a[i] = a[i] + 10# print(a)# 3. 使用 while 循环,通过下标遍历这个列表
a = [1, 2, 3, 4, 5]
i = 0while i < len(a):
print(a[i])
i += 1
# 1. 使用 in 来判定某个元素是否在列表中存在# a = [1,2,3,4]# print(1 in a)# print(10 in a)# print(1 not in a)# print(10 not in a)# 2. 使用 index 方法,来判定当前元素在列表中的位置,得到一个下标
a = [1, 2, 3, 4]
print(a.index(2))
print(a.index(3))
# print(a.index(10)) # 会报错
# 1. 使用 pop 删除列表中的最末尾的元素
a = [1, 2, 3, 4]
a.pop()
print(a)
# 2. 使用 pop 还能删除任意位置的元素,pop 的参数
a = [1, 2, 3, 4]
a.pop(1)
print(a)
# 3. 使用 remove 方法,可以按照值来进行删除
a = ["aa", "bb", "cc", "dd"]
a.remove("cc")
print(a)
# 1. 使用 + 针对两个列表进行拼接# a = [1,2,3,4]# b = [5,6,7,8]# c = b + a# print(c)# c = a + b# print(c)# print(a)# print(b)# 2. 使用 extend 来进行拼接# 这个拼接是把后一个列表的内容拼接到前一个列表里头
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
c = a.extend(b) # extend 不返回任何内容
a.extend(b)
print(a) # a 这里改变了print(b)
# 3. 使用 += 来进行拼接
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
a += b # a = a + bprint(a)
print(b)