模块
模块是一个包含所有的你定义的或者别人定义的函数和变量的文件,后缀为.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
安装即可使用
常见的比如sys
、os
、math
包
可以理解为模块的集合
把模块理解为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函数下的代码只能在该模块运行,不能被导入运行
import test
print(dir(test))
"""
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'fun1']
"""
留言