python导入文本中的矩阵 python 导入文本_python 导入自己写的类

python导入文本中的矩阵 python 导入文本_python 批量注释_02

python导入文本中的矩阵 python 导入文本_python导入文本中的矩阵_03

图|源自网络

文|一张顾巷

初识交互式编程、脚本式编程


//交互式编程//

交互式编程 不需要创建脚本文件

,通过 Python 解释器的交互模式即可编写代码。 Window 上在安装 Python 时已经安装了交互式编程客户端,提示窗口如下:

python导入文本中的矩阵 python 导入文本_python导入文本中的矩阵_04

在 python 提示符中输入文本“Hello, Python!”,然后按 Enter 键即可查看运行效果:

>>> print ("Hello, Python!")

,以上实例输出结果如下:

Hello, Python!


//脚本式编程//


脚本式编程是通过脚本参数调用解释器执行脚本。所有 Python 文件将以 .py 为扩展名。

让我们写一个简单的 Python 脚本程序。将上文中的print(“Hello, Python!”)拷贝至 test.py 文件中。

假设你已经按第一篇中的步骤,正确设置了 Python 解释器 PATH 变量。使用以下命令运行程序:

$ python test.py

输出结果:

Hello, Python!



基础语法


//标识符及命名规则//


  • 标识符只可由字母、数字、下划线组成。但不能以数字开头。
  • 标识符区分大小写。
  • 命名不能占用python关键字


可以通过keyword模块的 kwlist 函数

查询所有关键字,代码如下:

import keywordprint(keyword.kwlist)

以下划线开头的标识符是有特殊意义的。

以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

以双下划线开头的 _foo  代表类的私有成员,以双下划线开头和结尾的 _foo 代表 Python 里特殊方法专用的标识,如 __init__()代表类的构造函数。

//命令行参数//

很多程序可以执行一些操作来查看一些基本信息,Python 可以使用 -h 参数查看各参数帮助信息:

$ python -h 
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d     : debug output from parser (also PYTHONDEBUG=x) -E     : ignore environment variables (such as PYTHONPATH) -h     : print this help message and exit [ etc. ]

我们在使用脚本形式执行 Python 时,可以接收命令行输入的参数,具体使用可以参照 Python 命令行参数。


//行&缩进//

Python不像其他编程语言,可以通过大括号{}来对代码块进行划分,只能通过 缩进

来对 语句

进行 分组

,所谓的缩进就是每行代码前的 空白间隙

。 相同的空白间隙表示这些语句处于同一个层级,所以正确的缩进就显得非常重要,建议使用 Tab来进行缩进。

此外,如果你想 多个语句写到同一行,

可以使用; 分号

进行分隔。 有时 语句太长

,你还可以使用 \反斜杠

来衔接,而在 []{}()里分行不需要反斜杠衔接!


注释与模块


//注释//


注释是一段 「解释性」文本,程序运行时,会跳过不做处理,一般是对代码的解释或提示,以此提高代码的可读性。写注释既方便了别人阅读代码,也方便自己日后回顾,而不用苦思冥想当初写这段代码的目的。当然注释也不是写的越多越好,应 尽量避免没用的注释或写过多的废话


Python中提供了两种注释方式:「 单行注释

」和「 多行注释

」,单行注释通过#进行标识,多行注释则通过 两个三引号

来标识,代码示例如下:

# 一个单行注释
"""多行注释示例"""


//模块//


  • 模块的基本使用


模块其实就是一个Python文件,以 .py结尾,包含了Python定义和声明。


举个简单例子,你可以把 常用的代码块抽取出来 放到一个单独的py文件中,然后在用到的地方对自己的模块进行引用,模块引用示例如下:

# 导入整个模块import sys# 导入模块中的需要用到的部分from sys import argv# 多个的时候可以用逗号隔开from urllib.error import URLError, HTTPError# 导入模块中所有不是以下划线开头的名字,不建议这样做,如果同名会覆盖# 定义过的名字;如果你硬想用这种导入方式,可以添加__all__成员来进行约束# 比如:__all__ = ['a','b']from sys import *

另外,在导入自己的模块时,可能遇到这个问题:写在模块里的测试代码都执行了???


可以通过内置属性  __name__ 

来区分,当此模块作为程序运行时,

会等于 __main__

, 而作为一个模块导入到其他程序,值则 等于文件名字

(去掉.py)。 所以可以通过判断: __name__ 是否

等于

 __main__ 

来决定测试代码是否执行。示例如下:

if __name__ == '__main__':    test()
  • 模块的搜索路径与顺序


可以通过打印  sys.path

 来查看模块的搜索路径。 模块的搜索顺序

程序所在目录→标准安装目录→标准库安装目录→Python环境变量所包含的目录

所以,如果自定义的模块与内置模块重名的话,会调用自定义模块而非内置的模块,因此在命名模块时应尽量 避免重名

。如果硬是要同名且两个模块都用到,可以使用 完整路径引入

,并使用 as关键字

为模块 设置别名

。 此外,如果你的模块都不在这些搜索路径里的话,可以通过调用sys.path.append("路径") 临时把路径添加到搜索路径中。


  • 重复导入一个模块后会怎样


第一次导入后就将模块名加载到内存中,后续的import只是对已加载到内存中的 模块对象增加一次引用, 不会重新执行模块里的语句


  • __init__.py文件的作用


标识文件所在的目录是一个 python的模块包(package)

,一般是空文件,当然你也可以加点东西来控制包的导入行为,直接在__init__.py 文件中批量导入所需模块,而不用一个个导入,除此之外,还可以将一些初始化代码放入其中。

  • 模块的重载


上面说了重复导入模块,只是新增一个引用,而不会重新导入。有时可能需要在同一个会话中去更新模块,可以通过  imp标准库中的reload函数

 来完成。

from imp import reloadreload(模块名)