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程序代码的几种方法总结

    下面我将详细讲解如何调试Python程序代码的几种方法总结。本文将从以下几个方面进行介绍: 1.常用的Python调试工具2.断点调试法3.打印调试法4.使用logging模块进行调试 一、常用的Python调试工具 pdb:Python自带的调试工具,可在命令行下进行交互式调试,支持单步执行、断点设置、查看变量等操作。 ipdb:pdb的增强版,增加了一些…

    python 2023年5月31日
    00
  • python 开发的三种运行模式详细介绍

    Python 开发的三种运行模式详细介绍 Python 是一种高级编程语言,目前 Python 有三种不同的运行模式,它们分别是:交互模式、脚本模式和代码模块模式。每一种模式都有其特点和适用场景,本文将详细介绍这三种模式。 交互模式 交互模式是一种在 Python 解释器中直接输入并执行 Python 代码的模式。这种模式非常适用于测试和调试部分代码,试验一…

    python 2023年5月19日
    00
  • Python获取系统默认字符编码的方法

    获取系统默认的字符编码是Python编程中的常见需求之一。下面是关于Python获取系统默认字符编码的方法的详细攻略: 第一步:导入Python的sys模块 Python中的sys模块提供了许多系统级别的功能,其中包括获取系统默认字符编码的方法。我们可以使用import语句导入sys模块,代码如下: import sys 第二步:使用sys模块中的getde…

    python 2023年5月30日
    00
  • Python控制台输出俄罗斯方块的方法实例

    下面是Python控制台输出俄罗斯方块的方法实例的完整攻略: 步骤一:创建游戏场景 首先需要在Python控制台中创建一个游戏场景,可以用二维数组来实现,二维数组的每个元素可以表示一个方块的状态,当值为0时表示这个方块为空,当值为1时表示方块被占用。 以下是一个简单的示例代码,创建一个10行10列的游戏场景: # 创建10行10列的游戏场景 rows = 1…

    python 2023年6月5日
    00
  • 超详细的Python安装第三方库常用方法汇总

    以下是关于Python安装第三方库常用方法汇总的完整攻略: 问题描述 在Python中,我们经常需要使用第三方库来扩展Python的功能。但是,安装第三方库可能会遇到一些问题,例如找不到库、不兼容等。本攻略将介绍Python安装第三方库的常用方法,帮助您更好地安装和使用第三方库。 解决方法 使用以下步骤安装Python第三方库: 使用pip安装第三方库。 p…

    python 2023年5月13日
    00
  • python中的对数log函数表示及用法

    下面是Python中的对数log函数表示及用法的完整攻略。 1. 对数的基础知识 对数是数学中的一个重要概念,其中以10为底的对数被称为常用对数,以e为底的对数被称为自然对数。在Python中,可以使用math模块中的log()函数进行对数计算。其中,log10()函数表示以10为底的对数,log()函数表示以e为底的对数。 2. log()函数的用法及示例…

    python 2023年6月3日
    00
  • python安装pil库方法及代码

    这里是关于Python安装PIL库的详细攻略。 1. PIL库简介 PIL(Python Imaging Library)是Python图片处理领域中比较优秀的一个类库,提供了丰富的图片处理模块,可以方便地进行图片操作和处理,适合于图像处理、图像转换、格式转换等领域。但是,需要注意的是, PIL库版本较老,目前已经不再维护,因此推荐使用Pillow库进行替代…

    python 2023年5月14日
    00
  • 基于python对B站收藏夹按照视频发布时间进行排序的问题

    对于基于Python对B站收藏夹按照视频发布时间进行排序这个问题,我们可以采用下列攻略进行实践: 攻略: 1. 安装Bilibili API 为了获取B站上的视频信息,我们需要使用第三方Bilibili API库。可通过如下命令安装: pip install bilibili_api 2. 获取收藏夹中视频 使用Bilibili API,我们可以获取到收藏夹…

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