python基础
模块
一个以.py为后缀的文件成为模块
python模块可以包含类、函数、变量和可执行语句
导入模块的几种方式
import 模块路径 【可选:as 别名】
from 模块路径 import 功能名【可选:as 别名】
from 模块路径 import *
注意事项
- 如果导入多个模块,且模块中含有同名的功能时,如果调用该功能,调用的是后面导入的模块的功能
模块定位顺序
python解析器对模块位置的搜索顺序为:
- 当前目录
- pythonpath下的目录
- python默认目录,不同的系统默认路径也不相同默认路路径⼀一般为/usr/local/lib/python/
所以自己的文件名不要和已有模块重名,否则导致模块功能无法使用
模块名的命名规范为标识符规范
_all_
如果一个模块中有 __all__变量,如果使用from 模块名 import *时,只能导入这个列表中的元素
例如:
类定义部分:
__all__ = ['Father']
class Father:
name = 'zhangsan'
age = 20
money = 500000
__dono = '这是我自己的'
small = '这是可以继承的属性'
def __init__(self,name,age,money):
self.name = name
self.age = age
self.money = money
def study(self):
print('我是老爹的study方法')
@classmethod
def have_done(cls):
return cls.__dono
@staticmethod
def sleep(): # 如果没有@staticmethod 不传参编译不通过
print('睡觉啦')
def __str__(self):
return '我是父类'
def get_done(self):
return self.__dono
def set_done(self,dono):
self.__dono = dono
class Sun2(Father):
def study(self):
print('我是老二的study方法')
class Sun(Father):
def study(self):
print('我是老大的study方法')
调用部分:
from clas_20210711.继承 import *
if __name__ == '__main__':
zhangsan = Father('zhangsan', 45, 50000)
lisi = Sun('lisi',20,1000) # NameError: name 'Sun' is not defined
包
包也就是文件夹,包中存放的是模块和_init_.py,这个文件控制包的导入行为
在_init_.py中添加_all_=[]列表,控制允许导入的模块列表
注意,如果包内有模块需要被别的模块导入,则包名不能以数字开头,否则导入报错