1、任何以.py结尾的文件都是模块。每个导入的模块都有自己的命名空间,所以调用函数时,需要指定函数所在的的命名空间,否则会报错。
def hi(): print('hello world!') ################### import A21 >>> hi() Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> hi() NameError: name 'hi' is not defined >>> A21.hi() hello world!
2、模块导入的方式与区别。
第一种:import 模块名。用着种方式导入模块时,每次调用导入的模块中的函数时,必须采用 模块名.函数名()的形式,而有时候模块名会比较长,所以这种方法会比较麻烦。
第二种:from 模块名 import 函数名(*表示导入所有函数)。从模块中导入指定的函数(名),这种方式导入了指定函数的命名空间,调用时不用加模块名。注意:如果在不同模块中都相同名字的函数,而且同时用这种方法导入,就会因为名字混乱发生冲突。
第三种:import 模块名 as 新名字。用简单的名字替代原来较长的名字,从而达到简化的效果。
def hi(): print('hello world!') ################### import A21 >>> hi() Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> hi() NameError: name 'hi' is not defined >>> import A21 as A >>>A.hi() hello world!
3、if __name__ == '__main__'
该语句在区分一个模块是作为主程序还是导入模块时起作用。即,
eg:
程序1-1:
def printl(): print('12312') def printn(): print('232145') def test(): printl() printn() if __name__ == '__main__': test()
程序1-2
import __main1__ as m m.printl() m.printn()
单独运行程序1-2,结果为:
12312
232145
>>> __name__
'__main__'
>>> m.__name__
'__main1__'
>>>
单独运行程序1-1,结果如下:
12312
232145
>>> __name__
'__main__'
>>>
如果不采用该方法,程序1-1变为2-1,其余程序不变,
程序 2-1
def printl(): print('12312') def printn(): print('232145') def test(): printl() printn() #if __name__ == '__main__': # test() test()
运行,程序1-2,结果为:
12312 232145 12312 232145 >>>
4、模块搜索路径·
采用sys.path可以查看python模块导入时的搜索路径,搜索路径以列表的形式给出,所以要添加一个新的路径,采用append()方法添加新的路径即可。
示例:__main1__.py位于D盘下,不在python的默认路径中。
import sys >>> sys.path ['G:/0工作面试/学习记录/python', 'C:\\Users\\night_fall', ... 'F:\\python3\\lib\\site-packages\\setuptools-27.2.0-py3.5.egg'] >>> import __main1__ Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> import __main1__ ImportError: No module named '__main1__' >>> sys.path.append('D:\\') >>> import __main1__ >>> sys.path ['G:/0工作面试/学习记录/python', 'C:\\Users\\night_fall', ..., 'F:\\python3\\lib\\site-packages\\setuptools-27.2.0-py3.5.egg', 'D:\\']
5、包的创建及使用
1、创建一个文件夹,文件夹的名字就是包的名字,将相关的模块存放在该文件夹中。
2、在文件夹中创建一个"__init__.py"的模块文件,该文件可以为空,但是必须得有。其作用是告诉pyhon将该文件夹当成一个包来管理。
3、包的使用,导入模块时,在前面加上包名,即:import 包名.模块名