面向对象(每一个变量都是对象)
Python 是一种简单但功能强大的编程语言,非常适合处理语言数据。下面的 4 行 Python 程序就可以操作 file.txt 文件,输出所有后缀是“ing”的词
for line in open("file.txt"):
... for word in line.split():
... if word.endswith('ing'):
... print(word)
Python 是面向对象语言;每一个变量都是包含特定属性和方法的对象。例如,变量line 的值不仅仅是一个字符串序列。它是一个string 对象,包含一个用来把字符串分割成词的split() 方法(或叫操作)。我们在对象名称后面写上一个点再写上方法名称就可以调用对象的一个方法,例如line.split()。
模块
在Python中,一个.py文件就称之为一个模块(Module)。
导入模块中函数的方式:
方式一:import 模块名
使用时:模块名.函数名()
方式二 :from 模块名 import 函数
使用时:函数名()
包
假设我们的abc
和xyz
这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如mycompany
,按照如下目录存放:
mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py
引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py
模块的名字就变成了mycompany.abc
,类似的,xyz.py
的模块名变成了mycompany.xyz
。
请注意,每一个包目录下面都会有一个__init__.py
的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py
可以是空文件,也可以有Python代码,因为__init__.py
本身就是一个模块,而它的模块名就是mycompany
。
- 导入包中函数,以及模块的方式:
方式一:from 包名 import 模块名
使用时:模块名.函数名()
方式二:from 包名.模块名 import 函数名
使用时:函数名()
方式三 :import 包名.模块名
使用的时候 包名.模块名.函数名()
方式四:import 包名
前提是:在包里面的__init__.py
文件里写入 from . import 模块名 ,__init__.py
里面导入哪个模块,通过本方式就能使用哪个模块
例如:包pygame中的__init__.py 中导入了如下模块
则在文件中导入pygame后便可以调用Rect()函数,如下:
模块搜索路径
当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错。
默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:
>>> import sys
>>> sys.path
['', '/anaconda3/envs/alien_inva/lib/python37.zip', '/anaconda3/envs/alien_inva/lib/python3.7', '/anaconda3/envs/alien_inva/lib/python3.7/lib-dynload', '/anaconda3/envs/alien_inva/lib/python3.7/site-packages']
>>>