day 7
def measure():
"""测量温度和湿度"""
print("测量开始:")
temp = 39
wetness = 50
print("测量结束:")
return temp, wetness
# 元组
result = measure()
print(result)
# 需要单独的处理温度或湿度
# print(result[0])
# 注意:使用多个变量接收结果时,变量的个数应该和元组中的元素个数保持一致
gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
交换数字
a = 6
b = 100
# 1.法一:使用其他变量
# c = a
# a = b
# b = c
# 2.法二:不使用其他变量
# a = a+b
# b = a-b
# a = a-b
# 3.法三:python专有
# a, b = (b, a)
a, b = b, a
print(a)
print(b)
只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用
def demo(num, num_list):
print("函数内部的代码")
num = 100
num_list = [1, 2, 3]
print(num)
print(num_list)
print("函数执行完成")
gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_list)
print(gl_num)
若传递的参数是可变类型,在函数内部使用方法修改了数据的内容,同样会影响到外部数据
def demo(num_list):
print("函数内部的代码")
num_list.append(9)
print(num_list)
print("函数执行完成")
gl_list = [1, 2, 3]
demo(gl_list)
print(gl_list)
+=
def demo(num, num_list):
print("函数开始")
num += num
# 本质上是在调用列表的extend方法
# num_list = num_list + num_list 则不会改变全局变量
num_list += num_list
print(num)
print(num_list)
print("函数完成")
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_list)
print(gl_num)
函数的缺省
def print_info(name, title="", gender=True):
"""
:param title: 职位
:param name: 班上同学的姓名
:param gender: True 男生 False 女生
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print("[%s]%s是%s" % (title, name, gender_text))
print_info("小明", gender=True)
多值参数
参数名前增加一个* 可以接收元组
参数名前增加两个** 可以接收字典
def demo(num, *nums, **person):
print(num)
print(nums)
print(person)
demo(1)
demo(1, 2, 3, 4, 5, name="xiaoming", age=18)
# 拆包语法
gl_nums = (1, 2, 3)
gl_dict = {"name": "xiaoming", "age": 18}
demo(1, *gl_nums, **gl_dict)
def sum_numbers(*args):
num = 0
print(args)
for n in args:
num += n
return num
result = sum_numbers(1, 2, 3)
print(result)
函数的递归
一个函数内部调用自己
def sum_number(num):
print(num)
if num == 1:
return
sum_number(num - 1)
sum_number(3)
def sum_numbers(num):
# 1.出口
if num == 1:
return 1
# 2.数字的累加
temp = sum_numbers(num - 1)
return num+temp
result = sum_numbers(3)
print(result)