模块module
在python的项目中,一个py文件就是一个模块。在模块中定义的函数,可以在其他文件中引用。
创建模块
模块的命名规则
- 不能使用数字开头。
- 除了_ 之外不能使用其他特殊字符
- 建议使用英文命名。
定义模块
"""
自己定义的一些小工具
"""
import random
def get_phone():
phone = random.randint(13000000000,13999999999)
return phone
一个项目中可以创建很多模块,模块中定义很多函数,不同功能的函数放在不同模块中,使用的时候,可以导入自己定义的模块中的函数来使用。
import 导入模块
在项目中创建一个 新的模块, 命名为 login.py
在login.py 文件中要调用 tools.py 的函数。
这里可以通过使用 import 来导入 模块。
# 导入我们自己定义的模块 tools.py
import tools
# 引用tools中定义的函数
phone = tools.get_phone()
print(phone)
运行login.py,可以看到执行的结果。
通过import 这种方式可以导入自己自定义的模块和方法。
每次调用函数,使用import 这种方式需要前面跟上模块名。导入模块还有另外一种方式。
from … import …
定义tools.py
"""
自己定义的一些小工具
"""
import random
def get_phone():
phone = random.randint(13000000000,13999999999)
return phone
def get_password():
passwd = random.randint(0,999999)
return passwd
在login.py 文件中直接调用
# 导入我们自己定义的模块 tools 中定义的函数
from tools import get_phone,get_password
# 可以直接调用
phone = get_phone()
passwd = get_password()
print(phone,passwd)
使用 from 的方式 从模块中 导入 定义的函数。
使用的时候前面就可以不需要再添加 模块的名字即可。
比如random 模块中的函数时,也可以使用from方式来导入。
from random import randint
a = randint(0,100)
print(a)
包 package
在Python中 包跟目录是去别的。
包的创建
在项目的目录下创建 common 包 存放一些常用的工具。
在包的下面会有一个 init.py 文件。这个文件是自动生成的,不用管这文件,不要删除。
将tools.py 文件拖拽到 common 包下,因为原来的 tools.py 在其他文件中有引用。勾选 【搜索引用选项】
拖拽成功之后,可以看到
import… 导入包
如果在其他文件中需要引用定义的代码,也可以使用 import 的方式来导入,但是这里需要注意,导入的时候需要跟上包名。
项目根目录下创建包 useractions 存放用户操作相关的代码。
"""
自己定义的一些小工具
"""
import random
def get_phone():
phone = random.randint(13000000000,13999999999)
return phone
def get_password():
passwd = random.randint(0,999999)
return passwd
useractions 下创建文件 userlogin.py
"""
引用 tools 文件中的代码
"""
#导入包中的模块
import common.tools
# 调用里面的代码
phone = common.tools.get_phone()
passwd = common.tools.get_password()
print(phone,passwd)
在导入包的路径,需要大家注意,不管从什么地方导入,包的路径都是从项目的目录下开始算的。
import 导入包的路径比较长。下面引用的时候代码会稍多。不是很方便。
import … as…
可以给导入的包起别名。下面在引用的时候通过别名。
#导入包中的模块
import common.tools as tl # tl 就代表 common.tools
# 调用里面的代码
phone = tl.get_phone()
passwd = tl.get_password()
print(phone,passwd)
- 这里的tl 就是 common.tools 的别名, tl可以任意命名。
- 下面使用时 保持一致即可。
form … import …
也可以使用from .. import .. 的方式来导入。
#导入包中的模块
from common.tools import get_password,get_phone
# 调用里面的代码
phone = get_phone()
passwd = get_password()
print(phone,passwd)
from 后面跟上路径,import 导入具体的函数。
下面就可以直接引用。
if **name** == “main“
使用import 或者from … import这种语法导入的时候,如果导入的文件中有执行代码。
定义f.py
def f1():
print("f 文件的中的 f1")
f1()
运行文件。可以看到打印结果。
f 文件的中的 f1
定义 demo.py
在demo.py 文件中导入 f
import f
f.f1()
运行demo.py 可以看到,代码执行了两次。
因为在 import f的时候, 会自动加载f.py 文件,f.py文件中有 调用函数,所以f.py 文件中的调用也会被执行。
所以打印两次。
文件中有调用函数的地方 可以加 上main语句。
在文件中 输入 main 会有提示。
按下回车,会自动生成。将要执行的语句放在 下面
在demo.py 文件中,也是一样。
再次运行,只有1个结果。
def f1():
print("f 文件的中的 f1")
if __name__ == '__main__':
f1()
import f
if __name__ == '__main__':
f.f1()
所以我们在写代码的 如果要运行文件中定义函数,可以添加一个这样的语句,在这个语句下面调用函数。
需要注意
- 1个文件只需要加一个 main 语句。
- 如果没有要执行的语句,写个pass即可 ```python def f1(): print(“f 文件的中的 f1”)
if name == ‘main‘: pass ```