1、模块

使用模块

编写main.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"Is My Test Model"

__author__ = 'yhgh'

import sys

print('命令行参数为',sys.argv)
print('python路径为',sys.path)
#命令行执行
python .\main.py lucy tom lily
>>>>
命令行参数为 ['.\\main.py', 'lucy', 'tom', 'lily']
python路径为 ['E:\\pythonproject\\demo', 'E:\\python\\python36\\python36.zip', 'E:\\python\\python36\\DLLs', 'E:\\python\\python36\\lib', 'E:\\python\\python36', 'E:\\python\\python36\\lib\\site-packages']

import

语法:import [model_name1],[model_name2]import [model_name] as 别名

model.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"Is My Test Model"

__author__ = 'yhgh'

def add(num1,num2):
    return num1 + num2

def subtract(num1,num2):
    return num1 - num2

main.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"Is My Test Model For Import"

__author__ = 'yhgh'

#引入模块
import model

#使用模块中的函数
print(model.add(1,2))
print(model.subtract(1,2))

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

搜索路径是一个解释器会先进行搜索的所有目录的列表,一般为当前项目路径

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

from-import

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中

语法:from [model_name] import [name1],[name2]

main.js

#!/usr/bin/python3
# -*- coding: utf-8 -*-

"Is My Test Model For Import"

__author__ = 'yhgh'

#引入模块
from model import add,subtract

#使用模块中的函数
print(add(1,2))
print(subtract(1,2))

一个模块被另一个程序第一次引入时,其主程序将运行

如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行

model.js

if __name__ == '__main__':
    print('程序本身运行')
else:
    print('我作为一个模块')

main.js

import model

>>>>>
我作为一个模块

作用域

在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用

在Python中,是通过_前缀来实现的私有的函数和变量,private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。