Python中的import语句


Python中使用import语句来导入一个模块(module),或者用来导入一个包(package),模块的实质就是一个*.py文件,实现了一定逻辑功能,包含了变量、函数、类等代码块,包的实质就是一个项目工程,里面有很多*.py文件,其中必须带有一个__init__.py文件。

导入模块

假设自己工程里有一个person.py文件,需要在新建的test.py文件中要用到这个文件里的work函数:

  • person.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
def work():
    print ‘Work!’
  • test.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import person
person.work()
  • 执行test.py,输出打印结果:
Work!

导入包

  1. 现在创建一个项目为animal,包含三个文件__init__.pydog.pycat.py
    Python中的import语句_第1张图片
  • __init__.py为空
#!/usr/bin/python
# -*- coding:utf-8 -*-
  • dog.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
def play():
    print 'A dog is playing!’
  • cat.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
def play():
    print 'A cat is playing!’
  1. 把animal项目生成的整个文件拖到需要的项目下:


    Python中的import语句_第2张图片

    Python中的import语句_第3张图片

    现在需要调用dog和cat中的play函数:

  • 导入animal路径下的dog文件
    导入animal路径下的cat文件
import animal.dog
import animal.cat
animal.dog.play()
animal.cat.play()
  • 从animal路径下的dog文件中导入play函数,并给给它另命名为dog_play
    从animal路径下的cat文件中导入play函数,并给给它另命名为cat_play
from animal.dog import play as dog_play
from animal.cat import play as cat_play
dog_play()
cat_play()

# 因为dog和cat的play名都一样,不给另命名的话,第二个play会覆盖掉第一个play
# from animal.dog import play
# from animal.cat import play
# play()
# play()
  1. 现在给__init__.py文件中添加点内容:
  • __init__.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
import cat
import dog
  • 只导入animal包
import animal
animal.dog.play()
animal.cat.play()
  • 导入animal包里的全部内容
from animal import *
dog.play()
cat.play()
  • 或者导入animal中指定内容
from animal import dog,cat
dog.play()
cat.play()

最后一点需要注意

当引入自定义package中某个py文件时,需要在该package中定义__init__.py文件,然后在它里面引入该package必要的.py文件,如若引入全部文件则from package import *,否则会出现No module named models.xxx错误

你可能感兴趣的:(Python中的import语句)