模块
在python中,模块是代码组织的一种方式,把功能相近的函数放到一个文件中,一个文件(.py)就是一个模块(module),模块名就是文件名去掉后缀.py。这样做的好处是:
提高代码的可复用、可维护性,一个模块编写完毕后,可以很方便地在其他项目中导入
解决了命名冲突,不同模块中相同的命名不会冲突。
模块导入
导入模块后,使用模块中的东西
使用方法
模块名.函数
模块名:变量
模块名:类
自定义模块导入
import 方式导入
说明:这两个py文件在一个目录下。
cat calculate.py
#!/usr/bin/env python3
#coding:utf8
def add(*args):
if len(args) > 1:
sum = 0
for i in args:
sum+=i
return sum
else:
print("至少传入两个参数")
def minus(*args):
if len(args) > 1:
m = 0
for i in args:
m -= i
return m
else:
print("至少传入两个参数")
cat calculate2.py
#!/usr/bin/env python3
#coding:utf8
import calculate
list1=[1,3,5,7,9]
result=calculate.add(*list1)
print(result)
result=calculate.minus(*list1)
print(result)
[root@ceph01 python]# python3 calculate2.py
25
-25
说明:这两个py文件在一个目录下。
cat calculate.py
#!/usr/bin/env python3
#coding:utf8
#变量
number=100
#函数
def add(*args):
if len(args) > 1:
sum = 0
for i in args:
sum+=i
return sum
else:
print("至少传入两个参数")
def minus(*args):
if len(args) > 1:
m = 0
for i in args:
m -= i
return m
else:
print("至少传入两个参数")
#类
class Calculate:
def __init__(self,num):
self.num=num
def test(self):
print('正在使用Calculate进行计算')
@classmethod
def test1(cls):
print('Calculate中类方法')
cat calculate2.py
#!/usr/bin/env python3
#coding:utf8
import calculate
list1=[1,3,5,7,9]
#调用函数
result=add(*list1)
print(result)
result=minus(*list1)
print(result)
#调用变量
print(number)
#调用类
cal=Calculate(8)
cal.test()
#调用类方法
Calculate.test1()
python3 calculate2.py
25
-25
100
正在使用Calculate进行计算
Calculate中类方法
from 模块名 import *方式导入
cat calculate.py
#!/usr/bin/env python3
#coding:utf8
#变量
number=100
#函数
def add(*args):
if len(args) > 1:
sum = 0
for i in args:
sum+=i
return sum
else:
print("至少传入两个参数")
def minus(*args):
if len(args) > 1:
m = 0
for i in args:
m -= i
return m
else:
print("至少传入两个参数")
#类
class Calculate:
def __init__(self,num):
self.num=num
def test(self):
print('正在使用Calculate进行计算')
@classmethod
def test1(cls):
print('Calculate中类方法')
cat calculate2.py
#!/usr/bin/env python3
#coding:utf8
from calculate import *
list1=[1,3,5,7,9]
#调用函数
result=add(*list1)
print(result)
result=minus(*list1)
print(result)
#调用变量
print(number)
#调用类
cal=Calculate(8)
cal.test()
#调用类方法
Calculate.test1()
[root@ceph01 python]# python3 calculate2.py
25
-25
100
正在使用Calculate进行计算
Calculate中类方法
限制模块内可以导入的内容
在模块中使用__all__=[’’,’’]可以允许模块中哪些内容被导入,不被允许的就不能被导入。
cat calculate.py
#!/usr/bin/env python3
#coding:utf8
__all__=['number','add']
#变量
number=100
#函数
def add(*args):
if len(args) > 1:
sum = 0
for i in args:
sum+=i
return sum
else:
print("至少传入两个参数")
def minus(*args):
if len(args) > 1:
m = 0
for i in args:
m -= i
return m
else:
print("至少传入两个参数")
#类
class Calculate:
def __init__(self,num):
self.num=num
def test(self):
print('正在使用Calculate进行计算')
@classmethod
def test1(cls):
print('Calculate中类方法')
[root@ceph01 python]# cat calculate2.py
#!/usr/bin/env python3
#coding:utf8
from calculate import *
list1=[1,3,5,7,9]
#调用函数
try:
result=add(*list1)
print(result)
except:
pass
try:
result=minus(*list1)
print(result)
except:
pass
#调用变量
try:
print(number)
except:
pass
#调用类
try:
cal=Calculate(8)
cal.test()
except:
pass
##调用类方法
try:
Calculate.test1()
except:
pass
[root@ceph01 python]# python3 calculate2.py
25
100
if name == ‘main’:
import执行时会加载模块内的东西到内存中,假如模块内有测试语句不希望被加载,可以使用if name == ‘main’:
在自己的模块中__name__等于__main__,如果在其他模块中通过导入的方式使用__name__等于模块名。