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

yizhihongxing

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日

相关文章

  • Pandas之MultiIndex对象的示例详解

    Pandas之MultiIndex对象的示例详解 什么是MultiIndex对象 在Pandas中我们可能会遇到需要对数据进行层次化处理的情况,这时可采用MultiIndex对象来处理数据。 MultiIndex对象是通过指定多个层次化的索引来实现对数据的分组和筛选的。 如何创建MultiIndex对象 在Pandas中创建MultiIndex对象通常有两种…

    python 2023年5月14日
    00
  • 浅谈Python 对象内存占用

    浅谈Python 对象内存占用 Python是一种高级语言,由于它有自动内存管理机制,所以对象的内存管理都由Python解释器来处理。Python内存管理机制采用了引用计数的方式来管理对象的生命周期。当一个对象引用计数为0时,Python解释器便会自动将该对象所占用的内存释放掉。但是,当Python程序使用频繁或者处理大型数据时,仍然需要考虑内存使用情况。 …

    python 2023年6月3日
    00
  • Python字符编码与函数的基本使用方法

    Python是一种高级编程语言,可以进行字符编码和函数的操作。在使用Python进行编程时,字符编码和函数是非常重要的知识点,因此有必要对它们进行深入了解。 Python字符编码 什么是字符编码 字符编码指的是将字符集中的字符编码为二进制数据的过程。Python中包含了多种字符编码方式,如ascii、utf-8、utf-16等。其中,UTF-8是最常用的字符…

    python 2023年5月18日
    00
  • Python使用urllib模块的urlopen超时问题解决方法

    什么是urlopen超时问题 在使用Python中的urllib模块的urlopen方法打开URL链接时,如果服务器响应时间超过默认的超时时间,那么该方法将会一直阻塞等待直到服务器响应完成,这就是urlopen的超时问题。 urlopen超时问题的解决方法 为了解决这个问题,可以使用以下两种方法: 2.1. 设置超时时间参数 在调用urlopen方法时,可以…

    python 2023年6月3日
    00
  • python调用百度REST API实现语音识别

    下面是实现“python调用百度REST API实现语音识别”的完整攻略。 步骤一:注册百度开发者账号 首先,需要在 百度开放云平台 上注册一个开发者账号。注册成功后,在 Console 页面上创建一个语音识别应用,并获取 API Key 和 Secret Key。 步骤二:安装Python SDK 百度官方提供了 Python SDK,可以通过 pip 安…

    python 2023年5月19日
    00
  • 基于python 将列表作为参数传入函数时的测试与理解

    在Python中,可以将列表作为参数传入函数中进行处理。本文将详细讲解基于Python将列表作为参数传入函数时的测试与理解。 列表作为参数传入函数 在Python中,可以将列表作为参数入函数中进行处理。下面是一个示例: # 示例1:将列表作为参数传入函数 def sum_list(lst): sum =0 for i in lst: sum += i ret…

    python 2023年5月13日
    00
  • Python实现计算文件MD5和SHA1的方法示例

    以下是关于“Python实现计算文件MD5和SHA1的方法示例”的完整攻略: 简介 MD5和SHA1是常用的哈希算法,用于计算文件的哈希值。在本教程中,我们将介绍如何使用Python实现计算文件MD5和SHA1的方法,包括使用hashlib库和使用第三方库pycryptodome。 使用hashlib库 hashlib是Python标准库中的一个哈希算法库,…

    python 2023年5月14日
    00
  • 详解用Python Pillow 改变图像的宽度和高度的比例

    下面我来详细讲解用Python Pillow 改变图像的宽度和高度的比例的完整攻略。具体步骤如下: 安装Pillow库 在Python中,我们需要使用Pillow库来操作图像。可以通过以下命令安装: pip install Pillow 打开图像 首先我们需要打开需要操作的图像。可以使用Image.open()方法打开图像。 from PIL import …

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