廖雪峰 | 6.0 使用模块和安装第三方模块

2022-04-20  本文已影响0人  苦哈哈的柠檬水

1,在Python中,一个.py文件就称之为一个模块(Module)
2,模块使用优势:
(1)提高了代码的可维护性
(2)编写代码不必从零开始,可以被其他地方引用
(3)可以避免函数名和变量名冲突,相同名字的函数和变量完全可以分别存在不同的模块中。但是也要注意,尽量不要与内置函数名字冲突。点这里查看Python的所有内置函数。
3,包(Package)
Python引入了按目录来组织模块的方法,可以避免模块名冲突。

image.png
文件www.py本身是一个模块,其模块名就是mycompany.web.www,两个文件utils.py的模块名分别是mycompany.utilsmycompany.web.utilsmycompany.web也是一个模块

使用模块

1,以内建的sys模块为例,编写一个hello_1的模块:

#!/usr/bin/env python3  #使得本文件可以直接在Unix/Linux/Mac上运行
# -*- coding: utf-8 -*-   #表示.py文件本身使用标准UTF-8编码

' a test module '   #表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释

__author__ = 'Michael Liao'   #使用__author__变量标注作者

import sys   #导入sys模块

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':  #如果使用命令行运行模块,则运行test函数
    test()

(1)sys模块的argv变量,用list存储命令行的所有参数。sys.argv是获取运行Python文件的时候命令行参数。
(2)argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:

#文件a.py内容见下
import sys
a=sys.argv
b=len(sys.argv)
print(a)
print(b)
#运行程序
C:\Users\Alexia Lee>cd python_study
C:\Users\Alexia Lee\python_study>python a.py
['a.py']
1

C:\Users\Alexia Lee\python_study>python a.py Alexia
['a.py', 'Alexia']
2

(3)判断模块运行模式

if __name__=='__main__':
test()

C:\Users\Alexia Lee\python_study>python hello_1.py  #符合if条件,运行test函数
Hello, world!
C:\Users\Alexia Lee\python_study>python hello_1.py Alexia 
Hello, Alexia!
C:\Users\Alexia Lee\python_study>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import hello_1  #跳过if判断,忽略后面的执行命令
>>> hello_1.test()
Hello, world!

2,作用域
(1)定义:作用域:程序创建、访问、改变一个变量时,都是在一个保存该变量的空间内进行,这个空间为命名空间,即作用域。
(2)通过_前缀来表示该函数或变量是在模块内部使用

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

在模块里公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即:外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public

安装第三方模块

1,pip安装与使用
(1)在Python中,安装第三方模块,是通过包管理工具pip完成的
(2)在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,下载https://bootstrap.pypa.io/get-pip.py,然后直接运行 python get-pip.py即可
(3)安装第三方库Pillow的命令是:

pip install Pillow

2,安装常用模块:推荐直接使用Anaconda
(1)官网下载:https://www.anaconda.com/products/distribution
(2)按流程安装,下图全选

image.png

(3)cmd打开运行命令框,activate base激活环境,进入Python

C:\Users\Alexia Lee>activate base

(base) C:\Users\Alexia Lee>python
Python 3.9.7 (default, Sep 16 2021, 16:59:28) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

3,模块搜索路径
(1)加载模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错
(2)默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:

>>> import sys
>>> sys.path

(3)添加搜索目录

>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')
上一篇 下一篇

猜你喜欢

热点阅读