Post

Python Function

简介

  • Python函数是一段用来完成特定任务的可重复调用的代码块。它们接受输入参数、执行某些操作并返回结果。函数可以帮助我们组织代码,避免出现重复的代码,并使代码更易于阅读和维护。
  • 在Python中,定义一个函数需要使用def关键字,后面跟着函数名、参数列表和一个冒号。函数体内的代码必须缩进。
  • 以下是一个简单的Python函数示例:

    1
    2
    3
    4
    
    def greet(name):
        print("Hello, " + name + "!")
      
    greet("John")
    
  • 该代码定义了一个名为greet的函数,该函数接受一个参数name,将其与字符串"Hello, ""!" 连接起来并打印出来。最后一行代码调用这个函数并传递一个名为John的参数。
  • 当你运行这段代码时,它会输出:Hello, John!
  • 除了上面这种简单的函数,Python还支持很多不同类型的函数,包括没有参数的函数、返回值的函数、匿名函数和高阶函数等。

定义函数

在 Python 中,可以使用 def 关键字定义函数。函数定义语法如下:

1
2
3
4
def function_name(parameters):
    """函数文档字符串"""
    # 函数体代码
    return [expression]  # 可选的返回值

其中,function_name 是函数名,parameters 是可选的参数列表,用括号包含,多个参数之间用逗号分隔;函数体代码是函数要执行的操作,可以包含任意数量的语句;return 语句可选,用于指定函数的返回值。

例如,下面是一个简单的函数,将两个数相加并返回结果:

1
2
3
4
5
6
def add_numbers(a, b):
    """
    将两个数字相加并返回结果
    """
    result = a + b
    return result

在这个例子中,add_numbers 是函数名,它接受两个参数 ab。函数体代码将它们相加,并将结果存储在变量 result 中。最后,通过 return 语句将结果返回给调用方。

函数定义详解

  • 函数名
  • 参数列表
  • 函数体。

函数名

Python 中的函数名必须遵循标识符命名规则,即由字母、数字和下划线组成,不能以数字开头。建议给函数选用有意义的名字,便于代码的阅读和理解。

参数列表

函数可以接受零个或多个参数,这些参数传递给函数后,可以在函数内部使用。在 Python 中,参数列表放在括号中,多个参数之间用逗号隔开。例如:

1
2
def my_func(arg1, arg2, arg3):
    # 函数体代码

上面的函数定义接受三个参数 arg1arg2arg3

在 Python 中,参数可以有默认值,这样调用函数时就可以省略对应的参数。例如:

1
2
def my_func(arg1, arg2=0, arg3='default'):
    # 函数体代码

在上面的例子中,arg2 有一个默认值为 0arg3 有一个默认值为 'default'。因此,在调用 my_func 时,可以省略这两个参数。如果不指定 arg2,则它将被设置为 0。如果不指定 arg3,则它将被设置为 'default'

函数体

函数体是包含在函数定义中的代码块。函数体通常包含一些操作,用于处理输入参数并生成输出结果。在 Python 中,函数体由缩进的语句组成,这些语句会在函数被调用时执行。

1
2
3
4
5
def my_func(arg1, arg2):
    # 函数体代码
    print(f"arg1={arg1}, arg2={arg2}")
    result = arg1 + arg2
    return result

在上面的例子中,my_func 接受两个参数 arg1arg2。函数体包含两行代码,第一行使用 print 函数打印参数的值,第二行将 arg1arg2 相加,并将结果返回给调用方。

模块

  • Python 标准库中有很多内置的模块可供使用,例如:

    • os:提供了访问操作系统功能的接口,如文件操作、进程管理等。
    • sys:提供了与 Python 解释器及其环境交互的功能,如获取命令行参数、退出程序等。
    • math:提供了数学运算的函数,如三角函数、指数函数等。
    • datetime:提供了日期和时间相关的函数操作,如获取当前时间、计算时间差等。
  • 除了标准库外,我们还可以使用第三方库或自己编写的模块来扩展 Python 的功能。导入模块可以使用import语句,例如:

    1
    2
    
    import math
    print(math.sqrt(25))  # 输出 5.0
    
  • 也可以使用from ... import语句导入模块中的指定函数或变量,例如:

    1
    2
    3
    
    from datetime import date
    today = date.today()
    print(today)  # 输出格式为 YYYY-MM-DD 的今天的日期
    
  • 如果想要导入整个模块的所有成员,可以使用from ... import *语句,例如:

    1
    2
    
    from math import *
    print(sqrt(25))  # 输出 5.0
    

需要注意的是,当导入模块时,Python 会在指定的路径中查找模块文件。如果模块不存在或不能被找到,则会引发ModuleNotFoundError 异常。

在 Python 中,包是一个目录,其中包含了一组模块和子包。包的主要作用是将相关的模块组织在一起,使得程序设计更加模块化和易于管理。

  • Python 的标准库中有很多包可供使用,例如:

    • os:提供了访问操作系统功能的接口,如文件操作、进程管理等。
    • sys:提供了与 Python 解释器及其环境交互的功能,如获取命令行参数、退出程序等。
    • math:提供了数学运算的函数,如三角函数、指数函数等。
    • datetime:提供了日期和时间相关的函数操作,如获取当前时间、计算时间差等。
  • 除了标准库外,我们也可以自己编写包来组织自己的代码。在 Python 中,一个目录要想成为一个包,需要满足以下条件:

    1. 包目录下必须包含一个名为__init__.py的文件,该文件可以为空或者包含一些初始化代码;

    2. 包目录下可以包含若干个模块(.py 文件),这些模块可以相互导入。

    • 举例来说,假设我们编写了一个名为mypackage的包,其目录结构如下所示:
    1
    2
    3
    4
    5
    6
    7
    
    mypackage/
        __init__.py
        module1.py
        module2.py
        submodule/
            __init__.py
            submodule1.py
    
  • 其中,mypackage是一个包,包含了module1.pymodule2.pysubmodule子包。submodule子包中有一个名为submodule1.py 的模块。

    如果要使用该包中的模块,可以使用import语句,例如:

    1
    2
    3
    4
    5
    6
    7
    8
    
    import mypackage.module1
    mypackage.module1.foo()
      
    from mypackage.module2 import bar
    bar()
      
    from mypackage.submodule.submodule1 import baz
    baz()
    

需要注意的是,当导入包或模块时,Python 会在指定的路径中查找包或模块所在的目录,并将其添加到sys.path 中。如果包或模块不存在或不能被找到,则会引发ModuleNotFoundError异常。

This post is licensed under CC BY 4.0 by the author.