# student.py
class Student(object):
def __init__(self, name="NoName", age=18):
self.name = name
self.age = age
def say(self):
print("My name is {}.".format(self.name))
def say_hello():
print("Hi, this module's name is 'student'.")
if __name__ == "__main__":
print(">>> module Student") # 避免模块代码被导入时自动执行
导入自己的模块
# test_student.py
import student
stu = student.Student("Tom")
stu.say()
print(stu.age)
student.say_hello()
例2
# 01_student.py
class Student(object):
def __init__(self, name="NoName", age=18):
self.name = name
self.age = age
def say(self):
print("My name is {}.".format(self.name))
使用 importlib 导入模块名以数字开头的模块
# import 01_student # SyntaxError: invalid token
import importlib
new = importlib.import_module("01_student") # 可以理解成 import 01_student as new
stu = new.Student()
stu.say()
例3
导入模块的同时起一个别名
import student as st
stu = st.Student("Jerry", 17)
stu.say()
print(stu.age)
st.say_hello()
例4
使用时不需要前缀
from student import Student, say_hello
stu = Student("Tom")
stu.say()
print(stu.age)
say_hello()
例5
导入模块的所有内容
from student import *
stu = Student("Tom")
stu.say()
print(stu.age)
say_hello()
模块的搜索路径
什么是模块的搜索路径?
加载模块的时候,系统会在模块的搜索路径寻找目标模块
import sys
# sys.path 属性可以获取路径列表
print(type(sys.path))
print(sys.path)
for p in sys.path:
print(p)