1.模块简介

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件中,这样每个文件包含的代码相对来说就比较少。一个.py文件就称之为一个模块(Module)。

使用模块的好处:

  • 提高了代码的可维护性
  • 代码不需要从零开始编写
  • 避免了函数名和变量名冲突(我们在自己编写模块时,不必考虑会和其他模块冲突,但是我们也要注意,不要与内置函数冲突)

同时引入了包按目录来组织模块的方法。引入了包以后,只要顶层包名不与别人冲突,那么所有的模块都不会与别人冲突。比如同有abc.py,但是一个是hzw.abc.py,一个是xd.abc.py。

每个包目录下都有一个__init__.py文件,这个文件是必须存在的,否则python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码。

也可以有多级目录。

2.使用模块

#!/usr/bin/env python3
# -*- conding: utf-8 -*- #第一第二行是标准注释 'a test module' #模块的文档注释 __author__ = 'Hzw' #作者名称

以上的就是Python的标准文件模块。

#!usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 7 20:34:27 2018 @author: 18292
""" import sys def test():
args=sys.argv
if len(args)==1:
print("Hello, World!")
elif len(args)==2:
print("Hello",args[2])
else:
print("Too many arguement!") if __name__=='__main__':
test()

用命令行运行hello.py看看:

$ python3 hello.py
Hello,World!
$python hello.py Hzw
Hello, Hzw

3.作用域

一个模块中,我们定义了许多函数和变量,但是有的函数和变量我们希望给别人使用,有的函数和变量我们仅仅希望自己在模块内部使用。在python中,是使用_前缀是实现。

类似于_abc, __abc等

4.模块搜索路径

当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错。python解释器会搜索当前目录,所有已安装的内置模块和第三方模块,搜索路径放在sys的path变量中:

若想添加自己的搜索目录:

  • 直接修改sys.path,添加要搜索的目录。(这种方法是在运行时修改,运行结束后失效)。
  • 设置环境变量PYTHONPATH,该环境变量内容会被自动添加到模块搜索路径中。

廖雪峰Python总结3的更多相关文章

  1. 廖雪峰Python电子书总结

    函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...

  2. 廖雪峰python教程的第一个疑问

    函数的参数一节中提到: def add_end(L = []); L.append('END') return L 正常调用add_end时(也就是有参数传入时): >>> add_ ...

  3. 廖雪峰Python实战day1

    一.按照廖雪峰的教程,安装开发环境,问题不大. 1.异步框架aiohttp:$pip3 install aiohttp 2.前端模板引擎jinja2:$ pip3 install jinja2 3.安 ...

  4. 【python】廖雪峰python教程学习--基础

     No1: 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的 No2: 用r''表示''内部的字符串默认不转义 No3: 以'''开头,敲回车可以换行 No4: 布尔 ...

  5. 廖雪峰 ---- Python教程

    这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本. Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学 ...

  6. 廖雪峰Python学习笔记——类和实例

    Class MyList(list): __metaclass__ = ListMetaclass #它表示在创建MyList这个类时,必须通过 ListMetaclass这个元类的LIstMetac ...

  7. 廖雪峰Python学习笔记——序列化

    序列化 定义:程序运行时所有变量都存在内存中,把变量从内存中变成可存储或可传输的过程称为序列化pickling,在其他语言中称为serialization,marshalling,flattening ...

  8. 廖雪峰Python学习笔记——使用元类

    元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj ...

  9. 廖雪峰Python笔记

    △命令行模式和Python交互模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>:在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就 ...

  10. 廖雪峰Python总结5

    1.错误,调试和测试 程序编写造成了bug(必须修复) 用户输入出错(通过检查用户输入) 异常:无法在程序运行过程中预测的.异常是必须被处理的,否则程序会因为各种问题终止并且退出 1.try: try ...

随机推荐

  1. Android 开发 防止按键连续点击

    前言 按键防止连续点击是任何一个项目都要考虑的功能.下面我们将介绍几种防止按键连续点击的方法 用工具类实现 /** *@content:按键延时工具类,用于防止按键连点 *@time:2019-5-1 ...

  2. java虚拟机(十二)--可视化工具分析GC日志

    在上篇博客中,我们学习了Parallel.CMS.G1三种垃圾收集器的日志格式,本次我们通过工具去分析日志,会更加的直观 日志格式博客地址:java虚拟机(十一)--GC日志分析 GCeasy: 这是 ...

  3. 在sqlserver 的函数或存储过程中抛出异常(raiserror )

      raiserror的作用: raiserror 是用于抛出一个错误 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,sev ...

  4. Oracele 11.2.0.3 的一个问题

    最近又在折腾Oracle.由于要用到Oracle spatial对Google投影的空间数据的操作,所以得安装11.2.0.3以上版本的Oracle.但是发现这样的一个问题,当我在64位系统的笔记本上 ...

  5. 通过Angular-cli创建新项目

    前提:已经安装Git 方法一:(推荐) 1.在需要创建项目的文件夹中右键打开 Git Bush Here ,在此输入  ng new ‘项目名’  --skip-install   (如下my-app ...

  6. Http post请求案例

    public RmiRespBase sendHttpRes(String jsonParamStr, String url, String apiName,String systemId,Strin ...

  7. linux命令统计文件中某个字符串出现的次数

    1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...

  8. eureka注册中心设置用户名密码

    1.加入安全认证依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...

  9. Neo4j Desktop 管理工具的安装和应用

    安装和启动Neo4j桌面 如果您还没有,请下载 Neo4j.使用提供的说明(下载时显示),按照步骤1安装并启动Neo4j Desktop应用程序.下载页面上的步骤2说明向您展示了如何设置您的第一个项目 ...

  10. [转]SQLserver字符串分割函数

    一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果. CREATE function Get_StrArrayLength ( ) ...