Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】

Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】

函数的定义

定义方式

在Python中定义一个函数使用关键字def,后跟函数名称和括号,其中括号内可以定义函数的参数。函数代码块以冒号起始,并且缩进。如下面的示例:

def function_name(parameters):
    """docstring"""
    function_body

参数

函数可以带上参数,多个参数使用英文逗号隔开,参数必须在圆括号内指定。参数可以是必需的,也可以是可选的。可选参数通常指定默认值。例如:

def greet(name, msg="Good morning!"):
    """
    This function greets to the person with the provided message.
    If message is not provided, it defaults to "Good morning!"
    """
    print("Hello", name + ',' , msg)

在上述代码中,name 是必需的参数,msg 是可选参数。如果调用时不传递 msg 参数,默认就会使用 Good morning! 作为 msg 的值。

作用域

Python的作用域规则为L(local),E(enclosing),G(global),B(built-in)。也称作LEGB规则。

  • L(local):最内层,变量在此作用域仅能被此作用域(当前函数)内的代码所使用
  • E(enclosing):比L上一层,统计变量在此作用域与外层作用域(例如,当前函数的外一层函数)内都可以被此处的代码所使用
  • G(global):全局变量,变量在此作用域可被代码中的任意部分使用,无论当前的代码执行在哪个作用域内
  • B(built-in):Python内建变量,任何Python程序都能访问

举个例子:

total = 0 # 全局变量

def sum(arg1, arg2):
    # 返回2个参数的和."
    total = arg1 + arg2 # total在此处是局部变量.
    print("函数内 total : ", total)
    return total

# 调用sum函数
sum(10, 20)
print("函数外总数 : ", total)

在上面的例子中,total 是全局变量,sum 函数中 total 为局部变量。执行 sum 函数后,函数内部的 total 会先被输出,然后在函数外部输出全局的 total。输出结果如下:

函数内 total :  30
函数外总数 :  0

递归

递归函数意味着函数调用自身。这样程序就可以使用相同的函数来处理任意多的深度。递归的好处是它允许定义问题的解决方案,而不必考虑如何实现这些方案。递归函数至少应该有一个结束条件,否则它们将循环无限次,直到Python解释器的最大递归深度被超过为止。

下面的例子,使用递归方式求阶乘:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

print(factorial(5))

重载

Python不支持函数重载,函数名具有唯一性,如果需要不同参数的函数有相同的函数名,则可以通过为这些函数使用不同的参数和方法数的组合来实现。

函数的使用实例

获取最大值函数

def find_max_num(data_list):
    """
    获取列表中的最大数
    """
    max_num = data_list[0]
    for num in data_list:
        if num > max_num:
            max_num = num
    return max_num

上述函数接收一个列表参数,返回列表中最大的数。

求平均数函数

def calc_average(data_list):
    """
    计算一个列表中所有数的平均值
    """
    total = sum(data_list)
    return total / len(data_list)

上述函数接收一个列表参数,返回列表中所有数的平均值。

至此,“Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】”攻略完整结束。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 原生python实现knn分类算法

    下面就是详细讲解“原生Python实现KNN分类算法”的完整攻略。 1. KNN算法简介 KNN(K-Nearest Neighbor)算法是一种基本的分类和回归算法。KNN分类算法是根据所求点的k个样本中所属类别最多的一类来对所求点分类。 2. KNN算法步骤 2.1 数据集预处理 将整个数据集分为两部分:训练集和测试集。我们用训练集来进行模型的训练,用测…

    python 2023年6月5日
    00
  • python随机数分布random均匀分布实例

    下面是一份“Python随机数分布——均匀分布实例”的完整攻略。在本文中,我将向您展示在Python中使用random模块生成均匀分布随机数的方法,并且提供两个实例以说明此过程。 1. 引言 在Python中,random模块可以用于生成随机数。均匀分布是一种常见的随机分布,在此分布中,每个数据值的概率都相同。在Python中,我们可以使用random模块中…

    python 2023年6月3日
    00
  • python安装本地whl的实例步骤

    介绍如下: 安装 python 本地 whl 的实例步骤 1. 下载 whl 文件 首先,需要下载 whl 文件。可以从 PyPI(Python 包索引)上下载,也可以通过其他途径获取。 2. 确定本地 Python 版本以及位数 在下载 whl 文件之前,需要确定本地使用的 Python 版本以及位数(32 位/64 位)。可以通过终端输入以下命令获取: …

    python 2023年5月14日
    00
  • 利用python3如何给数据添加高斯噪声

    添加高斯噪声是一个常见的数据处理需求,Python 3中可以借助NumPy库轻松实现。下面是利用Python 3给数据添加高斯噪声的完整攻略: 步骤一:安装NumPy库 要在Python 3中使用NumPy库,需要先安装该库。打开终端,输入以下命令: pip3 install numpy 步骤二:生成高斯分布的随机数 NumPy库提供了生成高斯分布的随机数的…

    python 2023年6月3日
    00
  • Python字符串中删除特定字符的方法

    以下是Python字符串中删除特定字符的方法的完整攻略: 方法1:使用replace()函数 使用Python的replace()函数可以很方便地删除字符串中的特定字符。以下是一个示例代码: string = "Hello, World!" new_string = string.replace(",", "…

    python 2023年5月14日
    00
  • Python+OpenCV检测灯光亮点的实现方法

    Python+OpenCV检测灯光亮点的实现方法 概述 在计算机视觉领域中,灯光亮点检测是一项基础任务,涉及到图像处理、边缘检测、图像分割等多个方面。通过在图像中检测亮点,可以实现诸如研究光学性质、寻找特定形状物体等任务。 OpenCV是一个流行的计算机视觉库,提供了大量的图像处理、机器学习、深度学习等功能。通过结合Python和OpenCV,可以实现灯光亮…

    python 2023年6月2日
    00
  • python实现快速排序的示例(二分法思想)

    下面是详细讲解“Python实现快速排序的示例(二分法思想)”的完整攻略。 1. 什么是快速排序? 快速排序是一种常用的排序算法,它的基本想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有都要小,然后再按照此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达整个数据变成有序序列的目的。 2. 快速排序…

    python 2023年5月14日
    00
  • python 的topk算法实例

    Python实现TopK算法的完整攻略 TopK算法是一种常用的数据处理算法,用于从大量数据中快速找出前K个最大或最小的元素。在Python中,可以使用堆排序算法实现TopK算法。本文将详细讲解Python实现TopK算法的完整攻略,包括算法原理、Python实现过程和示例说明。 算法原理 TopK算法的基本思想是:维护一个大小为K的堆,遍历数据集中的每个元…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部