模块

  • 模块是一个包含所有的你定义的或者别人定义的函数和变量的文件,后缀为.py
  • 模块一般使用import导入模块名,即导入文件名,然后使用模块名加函数或者变量调用
# 第一步,自己动手写一个模块
def fun1():
    """
    随便写一个函数,用来打印"hello world"
    :return: None
    """
    print('hello world')
# 写完后重命名为test.py文件
# 调用模块
import test


test.fun1()  # 调用模块的函数
"""
# 输出结果
hello world
"""
  • 模块也可以使用from ..模块.. import ..函数或者类..调用,这样可以直接使用函数或者类或者变量
from test import fun1


fun1()

"""
# 输出结果
hello world
"""
  • 如果不确定模块内有什么函数或者类,可以用*号代替,这样就会导入模块中所有函数和类或者变量了
from test import *


fun1()

"""
# 输出结果
hello world
"""
  • 导入函数或者类后,可以用as对其重命名,这样可以少写一些字。
from test import fun1 as f1
import test as t

f1()
t.fun1()
"""
# 输出结果
hello world
hello world
"""

标准模块

  • Python自带的模块,不需要使用第三方pip或者conda安装即可使用
  • 常见的比如sysosmath

  • 可以理解为模块的集合
  • 把模块理解为py文件,那么包就是文件夹
  • 导入包的方法和导入模块的方法一样
  • 常用方法: from ..包.模块.. import ..类或者函数..
from os.path import exists

print(exists('test.py'))  # 验证文件路径是否存在

"""
# 输出结果
True
"""

name属性

  • 为了让特定的代码在模块中私有化,即模块B导入模块A的时候,模块A有部分代码模块B运行不了,只有模块A可以运行
  • name属性可以用来做模块测试
  • 使用方法:if __name__ = '__main__':
# 第一步,自己动手写一个模块
def fun1():
    """
    随便写一个函数,用来打印"hello world"
    :return: None
    """
    print('hello world')


if __name__ == '__main__':

    def fun2():
        print('这个函数只能test模块使用')
    fun1()
    fun2()

# 写完后重命名为test.py文件
"""
# 运行test模块后的结果
hello world
这个函数只能test模块使用
"""
from test import *

fun1()
fun2()

"""
hello world
Traceback (most recent call last):
  File "/home/tlntin/PycharmProjects/study/002.py", line 4, in <module>
    fun2()
NameError: name 'fun2' is not defined
"""
# 在其它模块导入test模块后,运行fun2函数失败,提示该函数未定义
# main函数下的代码只能在该模块运行,不能被导入运行
  • dir函数可以显示出模块中所有函数
import test
print(dir(test))

"""
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'fun1']
"""
最后修改日期:2020年9月15日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。