欢迎访问宙启技术站
智能推送

如何使用 Python 的模块和自定义函数?

发布时间:2023-06-22 21:27:56

Python是一种开源高级编程语言,其具有简洁、易学、高效的特点,因此深受广大程序员喜爱。在Python编程时,模块和自定义函数是非常重要的概念,使用它们可以大大提升代码的可维护性和可重复性。本文将介绍Python的模块和自定义函数的概念以及如何使用它们。

一、模块

在Python中,模块是指一个文件,其中包含了Python定义和声明的程序代码。Python进行模块导入时,实际上是将模块文件内的代码加载到内存中。模块的作用是将代码模块化,形成一个个相对独立的功能单元,使得代码更加清晰、易读、易维护,并且可以避免命名冲突。

1.1 模块导入

使用Python内置关键字import可以导入一个模块,导入模块后可以使用该模块中的函数、类、变量等。比如要导入Python自带的math模块,可以在代码中添加以下语句:

import math

导入后,就可以在代码中使用math模块提供的数学函数,比如使用math.sqrt(x)求x的平方根。需要注意,Python还支持多种导入方式。其中,最常用的两种是import和from-import。

- import

使用import语句可以导入整个模块。比如,要导入math模块,可以使用以下语句:

import math

这样,就可以使用math模块中的函数,例如:

print(math.sqrt(2))

- from-import

from-import语句可以指定从模块中导入哪些函数或变量。比如,要从math模块中导入sqrt函数,可以使用以下语句:

from math import sqrt

这样,就可以直接使用sqrt函数了,无需在前面再加上模块名。例如:

print(sqrt(2))

同时,也可以通过as关键字给模块以新的名称:

from datetime import datetime as dt

这样,就可以用dt代替datetime一词。

1.2 创建自己的模块

创建自己的模块非常简单,只需要新建一个py文件,在里面编写Python代码即可。比如,创建一个叫做my_module的模块可以采用以下步骤:

首先,在workspace目录下面新建一个文件夹my_module

在my_module中新建一个名为my_functions.py的Python文件

在my_functions.py中编写如下代码:

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

在其他Python文件中,通过import来导入我们的自定义模块:

import my_module.my_functions as my_func

# 计算1+2
print(my_func.add(1, 2))

二、自定义函数

在Python中,函数也是一种非常重要的程序单元。函数可以将一组语句封装到一个可调用的单元中,以达到重复利用、单元化理解、提高代码可读性的目的。在Python中,函数的定义语法为:

def function_name(parameters):
    """说明文档"""
    statement(s)
    return expression

其中,parameters是函数的参数列表,statement(s)是函数的主体;return语句可以选择性地返回值,如果不带表达式的return语句,则返回None。

2.1 编写函数

举个例子:

def cal_sum(a, b):
    sum_ = a + b
    return sum_

这是一个加法函数,输入两个数a和b,返回它们的和sum_。之后只需要调用函数即可:

num1 = 1
num2 = 2
result = cal_sum(num1, num2)
print(result)

打印结果为:3

2.2 函数的参数

在定义函数时,我们可以指定它所需要的参数,参数可以是必选的或可选的。强烈建议函数使用说明文档用于对函数的调用进行描述,说明文档可以使用docstring字符串格式,在函数定义之后编写。

- 位置参数

函数调用时,按照参数的位置传入;位置不变,传入的参数也不能变。

def calc_power(val1, val2):
    return val1 ** val2

calc_power(2, 3)  # 结果为8

在此,函数接收两个位置参数,对 个数进行指数幂运算,幂的指数为第二个参数。函数调用为2和3,所以2^3的结果是8。

- 关键字参数

在使用关键字参数时,顺序不受限制。

def calc_sum(val1=0, val2=0):
    return val1 + val2

calc_sum(val1=3, val2=4)  # 结果为7
calc_sum(val2=4, val1=3)  # 结果为7

- 默认参数

函数定义时,可以为参数提供默认值。

def calc_sum(val1=0, val2=0):
    return val1 + val2

calc_sum(5)  # 输出结果为5, val2采用默认值0
calc_sum(, 4)  # 报错 "positional argument follows keyword argument"

在此,当我们只调用calc_sum(5)时,函数只有一个参数val1=5。

- 不定长参数

有时我们可能需要定义一个可以传入任意数量参数的函数。如果有这样的需求,Python提供了*args和**kwargs。*args表示传入多个无名参数,它们被当做一个元组接收;**kwargs表示传入多个键值对,它们被当做一个字典接收。

def calc_sum(*nums):
    return sum(nums)

calc_sum(2, 3)  # 结果为5
calc_sum(1, 2, 3, 4, 5)  # 结果为15

- 返回值

函数可以返回一个值,也可以返回多个值。

def calc_sum_and_average(nums):
    sum_ = sum(nums)
    average = sum_/len(nums)
    return sum_, average

calc_sum_and_average([1, 2, 3])  # 结果为 6,2

- lambda表达式

lambda表达式可以创建一个简单函数,lambda的语法格式如下:

lambda arguments: expression

其中,lambda是Python的一个内置函数,调用该函数会返回一个函数对象。arguments是一个可选的参数列表,可以省略;expression是一个Python表达式,这个表达式的结果就是该匿名函数的返回值。其实lambda函数有一个友好的名称:又叫“匿名函数”。

使用lambda表达式编写一个简单的求平方的函数:

square = lambda num: num**2

使用该函数:

square(3)  # 结果为9

三、Conclusion

模块和自定义函数是Python的两个重要概念,它们使得代码更易读、更易维护,并提高了代码的可重复性和代码质量。Python提供了丰富的模块和函数库,可供开发者无限使用。熟练掌握这些概念及其使用,是Python编程的必备技能。