美文网首页
19-函数的返回值和参数进阶

19-函数的返回值和参数进阶

作者: 努力爬行中的蜗牛 | 来源:发表于2018-10-29 09:43 被阅读0次
函数

函数根据有无参数以及有无返回值,可分为

  • 有返回值,有参数
  • 有返回值,无参数
  • 无返回值,有参数
  • 无返回值,无参数
利用元组函数可以返回多个返回值
def measure():
    """测量温度和湿度"""
    print("开始测量")
    temp = 39
    wetness = 50
    print("测量结束")
    # 元组-可以包含多个数据,因此可以使用元组让函数一次范湖多个值
    return temp, wetness


# 如果函数返回的类型是元组,同时西瓦网单独的处理元组中的元素
# 可以使用多个变量,一次接收函数的返回结果
gl_temp, gl_wetness = measure()
print(gl_temp, 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
print(a, b)
在函数内部针对参数赋值不会影响外部实参
def demo(num, num_list):
    print("函数内部")
    num = 20
    num_list = [1, 2, 3]
    print(num, num_list)


gl_num = 99
gl_num_list = [3, 4, 5]
demo(gl_num, gl_num_list)
print(gl_num, gl_num_list)
在函数内部使用方法修改可变参数会影响外部实参
def demo(num_list):
    print("函数内部")
    num_list.append(9)
    print(num_list)


gl_num_list = [1, 2, 3]
demo(gl_num_list)
print(gl_num_list)
列表使用+=本质上是调用extend方法
def demo(num_list):
    print("函数内部")
    num_list += num_list
    print(num_list)


gl_num_list = [1, 2, 3]
demo(gl_num_list)
print(gl_num_list)
缺省参数
  • 定义函数时,可以给函数参数指定一个默认值,具有默认值的参数就是缺省参数。
  • 调用函数时,如果没有传入缺省参数的值,则在函数内部使用定义函数时指定的默认值。
  • 函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用。
gl_list = [6, 3, 9]
# 默认按照升序排序
# gl_list.sort()
# 如果需要降序排序,需要执行reverse参数
gl_list.sort(reverse=True)
指定函数缺省参数的默认值
def print_info(name, gender=True):  # 缺省参数的默认值是True
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("%s 是 %s" % (name, gender_text))


print_info("小明")
print_info("小美", False)
缺省参数的注意事项
  • 缺省参数应该放在函数参数列表的最后面
  • 调用带有多个缺省参数的函数时,需要指定参数名,这样解释器才能知道缺省参数的对应关系
def print_info(name, title="", gender=True):  # 缺省参数的默认值是True
    gender_text = "男生"
    if not gender:
        gender_text = "女生"
    print("[%s]%s 是 %s" % (title, name, gender_text))


print_info("小明")
print_info("小美", gender=False)
多值参数

定义支持多值参数的函数

  • 有时可能需要一个函数能够处理的参数个数是不固定的,就可以使用多值参数
  • python中有两种多值参数
    参数名前增加一个,可以接收元组
    参数名前增加两个
    *,可以接收字典
  • 一般在给多值参数命名时,习惯使用以下两个名字
    *args--存放元组参数,前面有一个“ * ”
    **kwargs--存放字典参数,前面有两个“ ** ”
  • args是arguments的缩写,有变量的含义
  • kw是keyword的缩写,kwargs可以记忆键值对参数
def demo(num, *nums, **person):

    print(num)
    print(nums)
    print(person)


# demo(1)
demo(1, 2, 3, 4, 5, name="小明", age=18)

> 输出结果
1
(2, 3, 4, 5)
{'name': '小明', 'age': 18}
def sum_numbers(*args):
# def sum_numbers(args):
    """ 数字累加
    :param args: 传递的元组参数
    :return: 返回累加结果
    """
    num = 0
    for arg in args:
        num += arg
    return num
result = sum_numbers(1, 2, 3)
# result = sum_numbers((1, 2, 3))
print(result)
元组和字典的拆包

在调用带有多个参数的函数时,如果希望:

  • 将一个元组变量,直接传递给args
  • 将一个字典变量,直接传递给kwargs

就可以使用拆包,简化参数的传递。拆包的方法

  • 在元组变量前增加一个*
  • 在字典变量钱增加两个**
def demo(*args, **kwargs):
    print(args)
    print(kwargs)
# 元组变量、字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}

# demo(gl_nums, gl_dict)
# 拆包语法,简化元组、字典参数的传递
demo(*gl_nums, **gl_dict)
# demo(1, 2, 3, name="小明", age=18)
递归的特点

一个函数内部调用自己
代码特点

  • 函数内部的代码是相同的,只是针对参数不同,处理的结果不同
  • 当参数满足一定条件时,函数不再执行。
    这个非常重要,通常被称为递归函数的出口,否则会出现死循环。
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. 数字累加
    # 假设sum_numbers能够正确处理1...num-1
    temp = sum_numbers(num - 1)
    return num + temp

result = sum_numbers(2)
print(result)

相关文章

  • python 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • python 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • Python函数高阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • 17 函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的...

  • 06.1.Python函数续

    目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数...

  • 11.Python函数续

    目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数...

  • 10.Python函数续

    目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数...

  • [Python基础]D10 函数进阶

    目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数...

  • Python基础知识12: 函数的返回值和参数进阶

    一、内容总览 1.1、函数参数和函数返回值的作用 1.2、函数的返回值进阶 1.3、函数的参数进阶 1.4、递归函...

  • 19-函数的返回值和参数进阶

    函数 函数根据有无参数以及有无返回值,可分为 有返回值,有参数 有返回值,无参数 无返回值,有参数 无返回值,无参...

网友评论

      本文标题:19-函数的返回值和参数进阶

      本文链接:https://www.haomeiwen.com/subject/ougvtqtx.html