如何使用 Python 的模块和自定义函数?
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编程的必备技能。
