首页 > 编程语言 ># 26_Python基础到实战一飞冲天(二)-python基础(二十六)--缺省多值参数和递归

# 26_Python基础到实战一飞冲天(二)-python基础(二十六)--缺省多值参数和递归

时间:2024-12-01 18:01:03浏览次数:13  
标签:26 函数 Python gender 缺省 多值 参数 print

26_Python基础到实战一飞冲天(二)-python基础(二十六)–缺省多值参数和递归

一、缺省参数-02-指定函数缺省参数的默认值

1、指定函数的缺省参数

  • 在参数后使用赋值语句,可以指定参数的缺省值。

2、指定函数的缺省参数定义 示例 代码(dzs_14_函数的缺省参数定义.py)

# dzs_14_函数的缺省参数定义.py

def print_info(name, gender=True):
    """班上同学信息

    :param name: 班上同学的姓名
    :param gender: True:男生,False:女生
    """
    gender_text = "男生"

    if not gender:
        gender_text = "女生"

    print("%s 是 %s" % (name, gender_text))

# 假设班上的同学男生居多
# 在指定缺省参数的默认值时,应该使用最常见的值作为默认值
print_info("小明", True)
print_info("老王")
print_info("小美", False)

3、示例:

在这里插入图片描述

二、缺省参数-03-缺省参数的注意事项

1、python函数 缺省参数的注意事项

1)函数 缺省参数的定义位置

  • 必须保证 带有默认值的缺省参数 在参数列表末尾,所以,以下定义是错误的!
def print_info(name, gender=True, title):

2)调用带有多个缺省参数的函数

  • 调用函数时,如果有 多个缺省参数需要指定参数名,这样解释器才能够知道参数的对应关系!如下:
def print_info(name, title="", gender=True):
print_info("小美", gender=False)

2、python函数 缺省参数的注意事项 示例 代码(dzs_15_函数缺省参数注意点.py)

# dzs_15_函数缺省参数注意点.py

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)
print_info("老王")
print_info("小美", gender=False)

3、示例:

在这里插入图片描述

三、多值参数-01-定义及作用

1、python函数的多值参数(知道):定义支持多值参数的函数

1)有时可能需要 一个函数 能够处理的参数 个数 是不确定的,这个时候,就可以使用 多值参数

2) python 中有 两种 多值参数:

* 参数名前增加 **一个** `*` 可以接收 **元组**。
* 参数名前增加 **两个** `*` 可以接收 **字典**。

3)一般在给多值参数命名时,习惯使用以下两个名字

* `*args` —— 存放 **元组** 参数,前面有一个 `*`。
* `**kwargs` —— 存放 **字典** 参数,前面有两个 `*`。

4) argsarguments 的缩写,有变量的含义。
5) kwkeyword 的缩写,kwargs 可以记忆 键值对参数

2、python定义支持多值参数的函数 示例 代码(dzs_16_定义多值参数.py)

# dzs_16_定义多值参数.py

def demo(num, *args, **kwargs):

    print(num)
    print(args)
    print(kwargs)

demo(1)
print("-" * 20)

demo(1, 2, 3, 4, 5)
print("-" * 20)

demo(1, 2, 3, 4, 5, name="小明")
print("-" * 20)

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

提示:多值参数 的应用会经常出现在网络上一些大牛开发的框架中,知道多值参数,有利于我们能够读懂大牛的代码

3、示例:

在这里插入图片描述

四、多值参数-02-数字累加案例演练

1、python函数多值参数 案例 —— 计算任意多个数字的和 案例:需求

1)定义一个函数 sum_numbers,可以接收的 任意多个整数

2)功能要求:将传递的 所有数字累加 并且返回累加结果。

2、python函数多值参数 案例:函数多值参数求和 案例 代码(dzs_17_函数多值参数求和.py)

# dzs_17_函数多值参数求和.py

def sum_numbers(*args):
# def sum_numbers(args):

    num = 0
    print(args)
    # 遍历 args 元组顺序求和
    for n in args:
        num += n

    return num

result = sum_numbers(1, 2, 3, 4, 5)
# result = sum_numbers((1, 2, 3, 4, 5))

print(result)

3、示例:

在这里插入图片描述

五、多值参数-03-元组和字典的拆包

1、python元组和字典的拆包(知道)

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

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

2)就可以使用 拆包,简化参数的传递,拆包 的方式是:

* 在 **元组变量前**,增加 **一个** `*`。
* 在 **字典变量前**,增加 **两个** `*`。

2、python元组和字典的拆包 示例 代码(dzs_18_元组和字典的拆包.py)

# dzs_18_元组和字典的拆包.py

def demo(*args, **kwargs):

    print(args)
    print(kwargs)


# 需要将一个元组变量/字典变量传递给函数对应的参数
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}

# 会把 gl_nums 和 gl_dict 作为元组传递个 args
# demo(gl_nums, gl_dict)

# demo(1, 2, 3, name="小明", age=18)
demo(*gl_nums, **gl_dict)

3、示例:

在这里插入图片描述

六、递归-01-递归的特点及基本代码演练

1、函数的递归

函数调用自身的 编程技巧 称为递归。

2、递归函数的特点

1)特点

一个函数 内部 调用自己,函数内部可以调用其他函数,当然在函数内部也可以调用自己。

2)代码特点

    1. 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同
    1. 参数满足一个条件 时,函数不再执行。这个非常重要,通常被称为递归的出口,否则 会出现死循环

3、递归函数 示例 代码()

# dzs_19_递归函数的特点.py

def sum_numbers(num):

    print(num)
    
    # 递归的出口很重要,否则会出现死循环
    if num == 1:
        return

	#自已调用自己
    sum_numbers(num - 1)
    
sum_numbers(3)

4、示例:

在这里插入图片描述

七、递归-02-递归演练代码的执行流程图

1、递归调用示意图1

在这里插入图片描述

2、递归调用示意图2

在这里插入图片描述

八、递归-03-递归实现数字累加

1、递归案例 —— 计算数字累加需求

1)定义一个函数 sum_numbers
2)能够接收一个 num 的整数参数
3)计算 1 + 2 + … num 的结果

2、使用递归计算数字累加 案例 代码(dzs_20_递归求和.py)

# dzs_20_递归求和.py

def sum_numbers(num):

    # 1.出口
    if num == 1:
        return 1

    # 2.数字的累加 num + (1...num-1)
    # 假设 sum_numbers 能够完成 num - 1 的累加
    temp = sum_numbers(num - 1)

    # 函数内部的核心算法就是 两个数字的相加
    return num + temp

result = sum_numbers(10)
print(result)

3、示例:

在这里插入图片描述

九、递归-04-数字累加的执行流程图

1、递归调用示意图

在这里插入图片描述

2、提示:

递归是一个 编程技巧,初次接触递归会感觉有些吃力!在处理 不确定的循环条件时,格外的有用,例如:遍历整个文件目录的结构

上一节关联链接请点击:

25_Python基础到实战一飞冲天(二)-python基础(二十五)–函数返回值和参数

标签:26,函数,Python,gender,缺省,多值,参数,print
From: https://blog.csdn.net/qfyh_djh/article/details/144092698

相关文章

  • # 25_Python基础到实战一飞冲天(二)-python基础(二十五)--函数返回值和参数
    25_Python基础到实战一飞冲天(二)-python基础(二十五)–函数返回值和参数一、全局变量-06-全局变量定义的位置及代码结构1、python全局变量定义的位置为了保证所有的函数都能够正确使用到全局变量,应该将全局变量定义在其他函数的上方。2、python全局变量定义的位置示例代......
  • 代码随想录算法训练营第十四天 | 226.翻转二叉树、 101. 对称二叉树、104.二叉树的最
    文档讲解:代码随想录视频讲解:代码随想录状态:完成4道题226.翻转二叉树整体思路:交换每一个节点的左右孩子思考:使用哪种遍历方式?建议使用前序或后序遍历(中序遍历比较绕)​前序遍历#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,va......
  • python毕设社区疫情防控物资调配平台ldly9.程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景新冠疫情的爆发使得全球公共卫生体系面临前所未有的挑战,社区作为疫情防控的前沿阵地,其物资调配能力直接关系到疫情防控的成效。在疫情初期......
  • python毕设社区志愿者服务管理系统ic6n8.程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着社会的快速发展和居民生活水平的提高,社区志愿者服务在促进社会和谐、提升居民生活质量方面发挥着越来越重要的作用。然而,传统的志愿者......
  • Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?
    Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?Python中的GIL(全局解释器锁)是什么?它如何影响多线程编程?摘要引言什么是GIL?为什么它会影响多线程?1.**什么是GIL(全局解释器锁)?**1.1**GIL的目的**1.2**GIL的工作机制**2.**GIL对多线程编程的影响**2.1**多线程不......
  • Python 潮流周刊#79:Python 的元数据困境(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2200字。以下是本期摘要:......
  • Python基础2
    1.列表:可变类型公共功能索引切片步长修改删除delforusers=['张三','李四','王五','刘六']foriinusers:forelementini:print(element)len独有功能append("content")在列表的最后追加一个元素insert(index,"content......
  • Python 元类机制的工作流程及参数调用的不同
    classMymeta(type):def__new__(cls,name,bases,dct):print(f'Mymeta.__new__:cls={cls},id(cls)={id(cls)}')returnsuper().__new__(cls,name,bases,dct)def__init__(cls,name,bases,dct):print(f'Mymet......
  • Python.task3
    Python.task3数据类型数字(intfloatcomplex)bool字符串序列元组字典集合字符串不可以修改内容str.replace(str1,str2):替换得到新字符串str.split(strx):分隔str.strip(strx):移除序列:list[]list.(index):取出对应下标,负数为倒着数list.append(x):追加一个元素......
  • 「Py」模块篇 之 Python常见模块介绍
    ✨博客主页何曾参静谧的博客(✅关注、......