python其他知识目录

1、模块介绍:

Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
简单介绍:
如果你从Python解释器退出并再次进入,之前的定义(函数和变量)都会丢失。因此,如果你想编写一个稍长些的程序,最好使用文本编辑器为解释器准备输入并将该文件作为输入运行。这被称作编写 脚本 。随着程序变得越来越长,你或许会想把它拆分成几个文件,以方便维护。你亦或想在不同的程序中使用一个便捷的函数, 而不必把这个函数复制到每一个程序中去。
为支持这些,Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们。这样的文件被称作 模块 ;模块中的定义可以 导入 到其它模块或者 主 模块(你在顶级和计算器模式下执行的脚本中可以访问的变量集合)。

2、模块类型:

1)内置模块
  使用方法  直接import导入使用

  在Python的安装目录下是内置模块,比如:C:\python3\Lib

2)第三方模块   https://pypi.org/
  使用方法   pip安装使用详解
  添加pip环境变量

import sys
sys.path.append("C:\python3\Scripts")
print(sys.path)
------------------结果:
['D:\\.........., 'C:\\python3\\Scripts']

如下:刚刚pip安装的第三方模块。参考路径:C:\python3\Lib\site-packages

3)自定义模块
  创建自定义模块
  使用方法

3、模块导入:

3.1模块导入的基本了解:

import 语句
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]]
比如要引用模块 os,就可以在文件最开始的地方用 import os 来引入

import os
print(os.path.dirname("c:\mcw_test.py"))
--------------------结果:
c:\

在调用 os 模块中的函数时,必须这样引用:
模块名.函数名
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

import os
print(os.path.dirname("/root/mcw_test.py"))
-----------------------结果:、
/root

搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 需要把命令放在脚本的顶端:

3.2模块调用的案例分析

示例一:
有两个文件在同级目录mcw1.py,mokuai.py:
mcw1.py
  def func():
  print("我是魔降风云变")

示例一:

)
mokuai.py
import mcw1
func()
-----------执行结果:
func()
NameError: name 'func' is not defined )
mokuai.py:
import mcw1.func
func()
-----------执行结果:
import mcw1.func
ModuleNotFoundError: No module named 'mcw1.func'; 'mcw1' is not a package
)
mokuai.py:
import mcw1
mcw1.func() ## 调用模块中的函数,模块.函数()
-------------执行结果:
我是魔降风云变

示例二:

mcw1.py:
def func():
print("我是魔降风云变")
func()
print("我是mcw1模块里的函数") mokuai.py:
import mcw1
mcw1.func()
--------------执行调用模块的结果:
我是魔降风云变
我是mcw1模块里的函数
我是魔降风云变 #代码分析:结果表明, 导入模块,加载此模块中所有的值到内存。

示例三:
导入非同一个目录下的模块

mcwtest2_dir
dir2_file.py
mcwtest_dir
mcw1.py
mokuai.py 正确正确调用方法:
)导入某个模块里所有函数
import mcwtest_dir.mcw1
mcwtest_dir.mcw1.func()
------------结果:
我是魔降风云变
)导入模块里单个函数
from mcwtest_dir.mcw1 import func
func()
----------结果:
我是魔降风云变
)导入模块里多个函数,不是所有函数都导入
from mcwtest_dir.mcw1 import func,func2
func()
func2()
--------------结果:
我是魔降风云变
我是小马过河
)导入模块里所有函数。可以导入一个py文件里的所有函数,不能导入一个目录里的所有py里的所有函数
from mcwtest_dir.mcw1 import *
func()
func2()
------------结果;
我是魔降风云变
我是小马过河
)重新定义函数,因为导入其它模块里的函数是先执行那个函数的,在本文件重新定义func后,覆盖了那个模块下定义的函数
from mcwtest_dir.mcw1 import func
def func():
print("重新定义func函数")
func()
-------------结果:
重新定义func函数 def func(): #导入放在下面,就覆盖了本文件下定义的同名函数
print("重新定义func函数")
from mcwtest_dir.mcw1 import func
func()
--------------结果:
我是魔降风云变
)如果本文件有定义同名函数,从外面模块导入的同名函数也需要,可以给导入进来的函数加个别名
from mcwtest_dir.mcw1 import func as f
def func():
print("重新定义func函数")
func()
f()
-------------结果:
重新定义func函数
我是魔降风云变
)添加文件的父目录到sys.path,父目录已经在sys.path里。导入时可以直接从文件里面导入函数
因为C:\mcw\已经在sys.path里,所有查询模块能找到C:\mcw\mcwtest_dir目录,但是不能找到该目录下的文件,只有将这个文件加入到sys.path里才能查询到这个目录下的文件。
import sys,os
sys.path.append("C:\mcw\mcwtest_dir")
from mcw1 import func
func()
---------------结果;
我是魔降风云变
错误调用方法:
)在sys.path里找不到这个函数,只能一层一层的找。
mcwtest2_dir\dir2_file.py
import mcw1
func()
------结果;
import mcw1
ModuleNotFoundError: No module named 'mcw1' )差上级目录,只有在根目录mcw下才能找到,因为只有mcw在sys.path列表里。
import mcwtest_dir.mcw1
mcw1.func()
-----------结果:
mcw1.func()
NameError: name 'mcw1' is not defined )差函数名调用func()
import mcwtest_dir.mcw1
mcwtest_dir.mcw1()
--------------------结果:
mcwtest_dir.mcw1()
TypeError: 'module' object is not callable
) 差一层mcw1文件名
import mcwtest_dir.mcw1
mcwtest_dir.func()
----------------结果:
mcwtest_dir.func()
AttributeError: module 'mcwtest_dir' has no attribute 'func'

导入模块:
import 模块 模块.函数()
from 模块 import 函数 函数() 【as起别名 / *】
from 模块 import 函数 as 别名 别名()

导入的另一个示例:


import mcwtest_dir.mcw1
mcwtest_dir.mcw1.func()

from mcwtest_dir import mcw1
mcw1.func()

from mcwtest_dir.mcw1 import func
func()
----------结果:
我是魔降风云变

总结
模块和要执行的py文件在同一目录 且 需要 模块中的很多功能时,推荐用: import 模块 $模块.函数
其他推荐:from 模块 import 模块 $模块.函数()
其他推荐:from 模块.模块 import 函数 $函数()

3.3 sys.path可添加也可删除

import sys
print(sys.path[])
--------结果;
C:\mcw\mcwtest2_dir import sys
print(sys.path[])
sys.path.pop()
print(sys.path) #sys.path里没有了C:\mcw\mcwtest2_dir,导入模块需要加上目录了。
-----------------结果:
C:\mcw\mcwtest2_dir
['C:\\mcw', 'C:\。。。。。\\pycharm_matplotlib_backend']

4、搜索路径

当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

import sys
print(sys.path)
--------------------------结果:
[root@xiaoma ~]# python .py
['/root', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/cloud_init-0.7.6-py2.7.egg', '/usr/lib/python2.7/site-packages/itchat-1.3.10-py2.7.egg'] import sys
print(sys.path)
---------------------结果:
['D:\\aPython_full目录\\小马过河的代码练习', 'C:\\mcw', 'C:\\mcw\\venv\\Scripts\\python36.zip', 'C:\\python3\\DLLs', 'C:\\python3\\lib', 'C:\\python3', 'C:\\mcw\\venv', 'C:\\mcw\\venv\\lib\\site-packages', 'C:\\mcw\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg', 'C:\\mcw\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg', 'C:\\软件安装\\PyCharm 2018.3.5\\helpers\\pycharm_matplotlib_backend']

5、dir()函数

dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
返回的列表容纳了在一个模块里定义的所有模块,变量和函数。如下一个简单的实例:

 )dir()
dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、
方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),
该方法将最大限度地收集参数信息。 复制代码
import sys,os
print(dir(os))
----------------结果:
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

参考链接:
1)http://www.runoob.com/python/python-modules.html
2)https://docs.python.org/zh-cn/3.7/tutorial/modules.html

python基础知识-12-模块的了解的更多相关文章

  1. python基础知识9——模块2——常见内置模块

    内置模块 内置模块是Python自带的功能,在使用内置模块相应的功能时,需要[先导入]再[使用] 1.sys 用于提供对Python解释器相关的操作: sys.argv 命令行参数List,第一个元素 ...

  2. Python基础知识:模块

    目录 JSON模块&pickle模块 requests模块 time模块 datetime模块 logging模块 os模块 sys模块 hashlib模块 re模块.正则表达式 config ...

  3. python基础知识8——模块1——自定义模块和第三方开源模块

    模块的认识 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...

  4. Python基础知识—sys模块初探

    有关Python解释器的信息 与所有其他模块一样,必须使用import语句导入sys模块,即import sys. sys模块提供有关Python解释器的常量,函数和方法.dir(系统)给出了可用常量 ...

  5. python基础知识-day8(模块与包、random、os)

    1.模块与包 package:相同的模块代码存储在一个目录下(即包里边会包含多个模块).   包不能存储在文件夹的目录下,模块名称不能使用关键字.(不包含工程文件夹) 2.模块与包的实例 1)在工程文 ...

  6. python基础知识~logger模块

    一 配置文件模块 import logging ->导入模块 logger = logging.getLogger('mylogger') ->初始化类二 创建句柄 1 文件句柄 fh = ...

  7. python基础知识~配置文件模块

    一 配置文件模块   import ConfigParser ->导入模块  conf = ConfigParser.ConfigParser() ->初始化类二 系统函数  conf.r ...

  8. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  9. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  10. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

随机推荐

  1. C# 实现动态加载DLL插件 及HRESULT:0x80131047处理

    本代码实现DLL的动态加载, 类似PS里的滤镜插件! 1. 建立一个接口项目类库,此处名称为:Test.IPlugin using System; namespace Test.IPlugin { p ...

  2. SpringMVC的应用与工作流程解析

    一:SpringMVC是什么 SpringMVC只是Spring的一个子框架,作用学过Struts2的应该很好理解,他们都是MVC的框架.学他就是用来代替Struts2的,那么为什么不用Struts2 ...

  3. iOS裁剪,缩放图片白边问题解决办法

    几年没来了,感觉还是要写点啥,以后碰见问题 解决就写这吧,当是一个随时的笔记也好. iOS裁剪,缩放图片的代码网上也很多了,但是笔者出现了右边和下边出现白边的情况.出现白边的原因是给的size中的CG ...

  4. 关于 class helper for ... 语法

    转载于万一的博客https://www.cnblogs.com/del/archive/2009/10/13/1582789.html class helper 可能是从 Delphi 2007 增加 ...

  5. Android ListView demo

    创建一个空的 Activity 相对应的layout文件会自动创建: ?xml version="1.0" encoding="utf-8"?> < ...

  6. inux下进程的最大线程数、进程最大数、进程打开的文件数

    inux下进程的最大线程数.进程最大数.进程打开的文件数 2008-12-07 23:48 =========================    如下转载自这里. linux 系统中单个进程的最大 ...

  7. IntelliJ IDEA教程之如何clean或者install Maven项目

    一.前言 Eclipse中如果我们想clean或者install工程,我们只需要右键工程,然后找到run->Maven install 或者run->Maven clean就可以了,但是I ...

  8. JavaWeb总结(八)

    对象作用域 在Servlet里可以用一个名字绑定一个对象,并且在应用中传递和使用这个对象 作用域对象 属性操作方法 作用域范围说明 ServletContext(上下文) void setAttrib ...

  9. PostgreSQL数据库表名的大小写实验

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@g ...

  10. [SHOI2008]仙人掌图

    [SHOI2008]仙人掌图 LG传送门 还不会仙人掌的同学可以看看我对仙人掌知识的一些梳理. 题意就是求仙人掌的直径,直径定义为图中最短路径最长的两点间的最短路径长度. 按照套路,先考虑求树的直径我 ...