简述
在 Python 中,模块是由 Python 代码组成的 .py 文件,任何 Python 文件都可以作为一个模块被引用。
编写模块就像编写任何其他 Python 文件一样,模块可以包含类、函数和变量的定义,然后在其他 Python 程序中使用。
| 版权声明:一去、二三里,未经博主允许不得转载。
在模块中定义函数
首先,创建一个名为 script.py 的文件,在里面定义了一个函数:
# 定义一个函数
def hello():
print("Hello, World!")
运行这个脚本,看看会发生什么?
$ python script.py
$
由于没有告诉程序要做什么(只有函数定义,并没有调用),所以任何事情都不会发生。
可以在同一目录下创建一个名为 main_program.py 的模块,然后导入模块,通过点(.)表示法来调用该函数:
import script
# 调用函数
script.hello()
现在,运行这个新脚本,就会得到相应的输出了:
$ python main_program.py
Hello, World!
在模块中定义变量
变量的定义比函数更简单,在 script.py 文件中添加一个变量:
# 定义一个变量
var = 'I am a Pythonista.'
# 定义一个函数
def hello():
print("Hello, World!")
接下来,在 main_program.py 文件中通过 print() 函数调用该变量:
import script
# 调用变量
print(script.var)
# 调用函数
script.hello()
当运行该程序时,将得到以下输出:
$ python main_program.py
I am a Pythonista.
Hello, World!
在模块中定义类
最后,还可以在 script.py 文件中定义一个类。
来创建一个 Person 类,其中包含 name 和 age 属性,以及一个用于打印属性的 print_msg() 函数:
# 定义一个变量
var = 'I am a Pythonista.'
# 定义一个函数
def hello():
print("Hello, World!")
# 定义一个类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def print_msg(self):
print("name:", self.name)
print('age:', self.age)
现在,在 main_program.py 中使用该类:
import script
# 调用变量
print(script.var)
# 调用函数
script.hello()
# 调用类
programmer = script.Person('Waleon', 18)
programmer.print_msg()
一旦使用 script.Person() 调用了 Person 类,便可以访问 main_program.py 类中的函数和属性。
再次运行程序,将得到以下输出:
$ python main_program.py
I am a Pythonista.
Hello, World!
name: Waleon
age: 18
注意: 模块的导入方式有很多种,具体可以参考:Python 模块。
文档描述
在编写模块时,有一点非常重要,为模块添加描述文档描述(例如:文档字符串、版权、作者等):
# encoding: utf-8
#
# Copyright (c) 2017 Waleon All rights reserved.
#
"""Custom module - Define a variable & function & class"""
# 定义一个变量
var = 'I am a Pythonista.'
# 定义一个函数
def hello():
print("Hello, World!")
# 定义一个类
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def print_msg(self):
print("name:", self.name)
print('age:', self.age)
这是一个很好的编程习惯,既可以供他人阅读,也便于日后自己参考。
注意:如果使用的是 Python 2.x,模块中包含中文,则需要添加一行声明文件编码的注释(模块第一行)。