模块
import sys
print('The command line arguments are:')
for i in sys.argv:
print(i)
print('\n\nThe PYTHPATH is', sys.path, '\n')
在IDE PyCharm下 Run -->Edit configurations
输出:
The command line arguments are:
E:/PythonProjects/a_byte_of_python/base/module_using_sys.py # sys.argv[0]
we # sys.argv[1]
are # sys.argv[2]
arguments # sys.argv[3]
The PYTHPATH is ['E:\\PythonProjects\\a_byte_of_python\\base', 'E:\\PythonProjects\\a_byte_of_python', 'E:\\PythonProjects\\a_byte_of_python\\venv\\Scripts\\python36.zip', 'D:\\Python36-32\\DLLs', 'D:\\Python36-32\\lib', 'D:\\Python36-32', 'E:\\PythonProjects\\a_byte_of_python\\venv', 'E:\\PythonProjects\\a_byte_of_python\\venv\\lib\\site-packages', 'E:\\PythonProjects\\a_byte_of_python\\venv\\lib\\site-packages\\setuptools-28.8.0-py3.6.egg', 'E:\\PythonProjects\\a_byte_of_python\\venv\\lib\\site-packages\\pip-9.0.1-py3.6.egg', 'E:\\Programming SoftWare\\PyCharm 2018.1.2\\helpers\\pycharm_matplotlib_backend']
sys是一个内置模块。
sys.argv变量是一系列字符串的列表(List),包含了命令行参数这一列表。
sys.path内包含了导入模块的字典名称列表。
按字节码编译的.pyc文件
更加快速,因为导入模块时所需的一部分处理工作已经完成了。
独立于运行平台。
注意:这些.pyc文件通常会创建在与对应的.py文件所处的目录中。如果Python没有相应的权限对这一目录进行写入文件的操作,那么.pyc文件将不会被创建。
模块的__name__
当模块第一次被导入时,它所包含的代码将被执行。我们可以通过这一特性来使模块以不同的方式运行,这取决于它是为自己所用还是从其他的模块中导入而来。可以通过__name__属性来实现。
if __name__ == '__main__':
print('This program is being run by itself')
else:
print('I am being imported from another module')
输出:This program is being run by itself
编写你自己的模块
保证它以.py为扩展名即可。
该模块应该放置于与其他我们即将导入这一模块的程序相同的目录下,或者是放置在sys.path所列出的其中一个目录下。
mymodule.py:
def say_hi():
print('Hi, This is mymodule spreaking.')
__version__ = '0.1'
mymodule_demo.py:
from mymodule import *
say_hi()
print(__version__)
输出:
Hi, This is mymodule spreaking.
Traceback (most recent call last):
File "E:/PythonProjects/a_byte_of_python/base/mymodule_demo.py", line 3, in <module>
print(__version__)
NameError: name '__version__' is not defined
import * 将导入say_hi等公共名称,但不会导入__version__名称,因为后者以双下划线开头。
dir函数
dir函数为内置函数,能够返回由对象所定义的名称列表。
print(dir())
a = 5
print(dir())
del a
print(dir())
输出:
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a']
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
包
包是指一个包含模板与一个特殊的__init__.py文件的文件夹。