1.模块:使程序更容易维护;一个.py文件就是一个模块
好处:
1.提高可维护
2.可重用
3.避免函数名,变量名冲突
分类:
1.内置标准模块(标准库)执行help('modules')查看所有python自带的和下载第三方模块的列表
2.第三方开源模块,可通过pip install 模块名 联网安装
3.自定义模块
--------------------------------------------------------
1.1.所有内置和第三方模块:
>>> help('modules') Please wait a moment while I gather a list of all available modules... ClearWindow atexit http runscript __future__ audioop hyperparser sched __main__ autocomplete idle scrolledlist _ast autocomplete_w idle_test search _asyncio autoexpand idlelib searchbase _bisect base64 imaplib searchengine _blake2 bdb imghdr secrets _bootlocale binascii imp select _bz2 binhex importlib selectors _codecs bisect inspect setuptools _codecs_cn browser io shelve _codecs_hk builtins iomenu shlex _codecs_iso2022 bz2 ipaddress shutil _codecs_jp cProfile itertools signal _codecs_kr calendar json site _codecs_tw calltip_w keyword smtpd _collections calltips lib2to3 smtplib _collections_abc cgi linecache sndhdr _compat_pickle cgitb locale socket _compression chardet logging socketserver _csv chunk lzma sqlite3 _ctypes cmath macosx sre_compile _ctypes_test cmd macpath sre_constants _datetime code macurl2path sre_parse _decimal codecontext mailbox ssl _dummy_thread codecs mailcap stackviewer _elementtree codeop mainmenu stat _findvs collections marshal statistics _functools colorizer math statusbar _hashlib colorsys mimetypes string _heapq compileall mmap stringprep _imp concurrent modulefinder struct _io config msilib subprocess _json config_key msvcrt sunau _locale configdialog multicall symbol _lsprof configparser multiprocessing symtable _lzma contextlib netrc sys _markupbase copy nntplib sysconfig _md5 copyreg nt tabnanny _msi crypt ntpath tarfile _multibytecodec csv nturl2path telnetlib _multiprocessing ctypes numbers tempfile _opcode curses opcode test _operator datetime operator textview _osx_support dbm optparse textwrap _overlapped debugger os this _pickle debugger_r outwin threading _pyclbr debugobj paragraph time _pydecimal debugobj_r parenmatch timeit _pyio decimal parser tkinter _random delegator pathbrowser token _sha1 difflib pathlib tokenize _sha256 dis pdb tooltip _sha3 distutils percolator trace _sha512 doctest pickle traceback _signal dummy_threading pickletools tracemalloc _sitebuiltins dynoption pip tree _socket easy_install pipes tty _sqlite3 editor pkg_resources turtle _sre email pkgutil turtledemo _ssl encodings platform types _stat ensurepip plistlib typing _string enum poplib undo _strptime errno posixpath unicodedata _struct faulthandler pprint unittest _symtable filecmp profile urllib _testbuffer fileinput pstats uu _testcapi filelist pty uuid _testconsole fnmatch py_compile venv _testimportmultiple formatter pyclbr warnings _testmultiphase fractions pydoc wave _thread ftplib pydoc_data weakref _threading_local functools pyexpat webbrowser _tkinter gc pyparse windows _tracemalloc genericpath pyshell winreg _warnings getopt query winsound _weakref getpass queue wsgiref _weakrefset gettext quopri xdrlib _winapi glob random xml abc grep re xmlrpc aifc gzip redirector xxsubtype antigravity hashlib replace zipapp argparse heapq reprlib zipfile array help rlcompleter zipimport ast help_about rpc zlib asynchat history rstrip zoomheight asyncio hmac run zzdummy asyncore html runpy Enter any module name to get more help. Or, type "modules spam" to search for modules whose name or summary contain the string "spam".
--------------------------------------------------------
1.2.导入模块方式:(模块一旦被导入,即相当于执行了另外一个py文件里的代码)
1.
>>> import random
>>> random.randint(10,100)
29
>>> import os
>>> os.write()
>>> import multiprocessing
2.
>>> from os import rmdir
>>> rmdir()
>>> from os import rmdir,rename
>>> rename()
3.
>>> from djano.core import handlers
>>> from djano.core.handlers import wsgi
4.
>>> import multiprocessing as mul
>>> mul.
>>> from socket import * #全部存到dir()下 不介意这么做,名字会重名;
>>> dir()
--------------------------------------------------------
1.3.导入模块路径:
D:\路飞学城\练习与作业\pycharm\练习\4.模块>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule #(模块一旦被导入,即相当于执行了另外一个py文件里的代码)
hello alice
>>> import mymodule 从当前目录找 找不到去sys.path下去找:
>>> import sys
>>> sys.path
['', 'C:\\Users\\bj\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip', 'C:\\Users\\bj\\AppData\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\Users\\bj\\AppData\\Local\\Programs\\Python\\Python36\\lib', 'C:\\Users\\bj\\AppData\\Local\\Programs\\Python\\Python36', 'C:\\Users\\bj\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
对于:'' 当前目录
对于:\Python36\\lib\\site-packages:
内置的,第三方下载的,所有模块都会在这里
--------------------------------------------------------
1.4 开源模块安装使用:
https://pypi.python.org/pypi 是python的开源模块库,(站点在美国,下载慢,容易断)(PyTyrion)(alex_sayhi)(paramiko)
截止2017年9.30日,已经收录了118170个来自全世界python开发者贡献的模块。
1.4.1.源码安装:(需下载)
python setup.py build 编译源码
python setup.py install 安装源码
Installed c:\users\bj\appdata\local\programs\python\python36\lib\site-packages\pytyrion-1.0.1-py3.6.egg
>>> import Tyrion
>>> Tyrion..
pip3 uninstall PyTyrion 卸载
1.4.2.联网安装:
pip3 install PyTyrion 安装联网
c:\users\bj\appdata\local\programs\python\python36\lib\site-packages\pytyrion-1.0.1-py3.6.egg-info
c:\users\bj\appdata\local\programs\python\python36\lib\site-packages\tyrion
>>> import Tyrion
>>> Tyrion...
pip3 uninstall PyTyrion 卸载
1.4.3.国内镜像豆瓣安装:
国内镜像豆瓣站点:如同https://pypi.python.org/pypi
pip3 install -i http://pypi.douban.com/simple/ paramiko --trusted-host pypi.douban.com #注意simple后面得空一下
pip install -i http://pypi.douban.com/simple/ alex_sayhi --trusted-host pypi.douban.com
--------------------------------------------------------
2.包(Package):对模块文件进行划分
一个文件夹下有多个.py文件,在加上__init__.py空文件,这个文件夹就是一个包了。
不同包之间得模块如何互相导入
2.1.跨模块导入
from crm import say
入口程序得目录加载到sys.path即环境变量中,就有了跨模块得调用
2.2.跨模块导入
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from proj import hello
2.3.跨模块导入
from . import a
from ..proj import hello
注意:
python使用. .. 相对导入模块要满足两个条件:
1.文件夹中必须有__init__.py文件,该文件可以为空,但必须要有
2.不能作为顶层模块来执行该文件夹中得py文件(即不能作为主函数得入口)
意思:..后不能到主函数入口得目录下
----------------------------------------
总结:
1.模块介绍
2.导入模块方式
3.开源模块安装
4.包,跨模块导入