当前位置: 首页>編程日記>正文

Python基础之模块管理

Python基础之模块管理

一 为什么需要模块和包

随着项目越来越大,所有代码都放在一个文件中,已经不能满足我们的需求了。这时候就要将代码进行整理了,模块和包的出现就是为了解决这个问题的。模块可以将一些相关联的代码组合在一个py文件中,包可以将一些相关联的模块组合在一个文件夹中。

二 将一个模块导入到当前文件中的几种方式

1.import

导入某个模块。以后要使用模块中的函数或者方法或者变量,则需要使用模块名.xxx的形式调用。

2.from xxx import xxx

从某个模块中导入某个对象或者方法等。也可以一次性的从模块中导入所有的对象。使用from xxx import *。

from c import c_method
from d import my_add
# import cprint('hello world')print('b end')

3.from a import b as c

从a中导入b并命名为c。以后在代码中引用b,通过c来引用。

三 包

包其实本质上就是一个文件夹,将一些相关联的模块组合在一起。但是如果一个文件夹要让Python识别为一个包,则必须在这个文件夹中创建一个叫做__init__.py的文件。一个文件夹中只有拥有了__init__.py这个文件,才能被视为一个包。
在同一个包中的模块如果要互相导入,则只能通过相对的方式进行导入,即:from . import xxx。

all

如果是在模块中写了这个变量,将控制from 模块名字 import *的行为。
如果在__init__.py文件中有这个变量,那么它将控制着from 包 import *的行为。

__all__ = ['GLOBAL_ZHILIAO','hello','Person']GLOBAL_ZHILIAO = 'zhiliao'def hello():print('hello')class Person(object):def __init__(self):print('person init method')
# 1. 模块__all__变量的作用
# from zhiliao import *
# print(GLOBAL_ZHILIAO)
# hello()
# p1 = Person()# 2. 包中__all__变量的作用
# 从包中import *,将不能导入任何模块
from tools import *
my_file.save_data("")
my_request.get_request('www.baidu.com')

五 模块的搜索路径

在当前目录下搜索模块。
在环境变量PYTHONPATH中搜索模块。
在Python安装路径下的Lib目录下查找。
使用os.path可以看到所有的查找路径。

from tools import my_request
my_request.get_request('xxx')import sys
print(sys.path)

六 模块的循环导入

比如有现在目录中有两个模块,一个a.py,一个b.py。在a.py中引用了b。而在b.py中又引用了a,那么这时候就产生了循环导入,让两个导入都不能完成。

name

如果是作为主程序来运行,那么等于__main__,如果是作为被导入的方式运行,那么是这个文件的名称。

八 安装包或者模块

可以通过pip或者easy_install安装。pip是现代化的一种安装包的方式,以下讲解pip的常用命令:

1.安装包

pip install requests

2. 安装指定版本的包

 pip install django == 1.10.6

3.卸载包

 pip uninstall django

4.升级包

 pip install -U requests

5.升级pip

 pip install -U pip

6.查看当前pip是哪个版本

 pip --version

7.显示某个已安装的包的信息

 pip show -f <包名>

8.列出当前环境下安装了哪些包

pip list

9. 将当前环境安装的包全部列出来放在文件中

 pip freeze > requirements.txt

10.从某个文件中安装包

pip install -r requirements.txt

11.临时更改安装源,以豆瓣源为例

pip install <包名> -i https://pypi.douban.com/simple

12.永久更改安装源

windows操作系统:在当前用户目录下新建pip/pip.ini,然后在文件中添加以下代码:

  [global]index-url = https://pypi.douban.com/simple

Linux/Mac:在用户目录下新建.pip/pip.conf,然后在文件中添加以下代码:

  [global]index-url = https://pypi.douban.com/simple

九 import解析

1.sys.modules

#coding: utf-8
import sys
# import b
# 1. 执行b模块中的代码# 2. 将b这个模块添加到sys.modules这个字典中
# import b
# sys.modules的作用:用来判断某个模块是否已经被导入到当前文件中
# is_in_modules = 'b' in sys.modules
# print(is_in_modules)
# import b# 3. 在当前文件中,创建一个变量叫做b来指向b这个模块
# import b
# import osfrom b import my_add
# 1. 执行b模块中所有的代码
# 2. 将b这个模块加到sys.modules中
print('b' in sys.modules)
# 3. 创建一个变量叫做my_add,指向了b模块下的my_add函数

2.import流程

# import b做的第一件事情,就是判断b是否在sys.modules这个字典中存在
# 1. 如果存在,就不再去导入b了。也就是说,就不会再去执行b模块中的代码
# 了
# 2. 如果不存在,就会导入b。然后执行b这个模块中的代码
# import b
from d import my_addprint('c file')def c_method():print('c method')my_add(1,2)

十 _ _ name _ _

from tools import my_fileprint('main:'+__name__)# 如果一个Python文件或者模块是作为被导入来运行的,
# 那么就不是作为主运行文件来执行的# 如果直接通过python a.py 那么a.py就是作为主运行文件来执行的def main():print('hello')if __name__ == '__main__':main()# 1. 如果在主运行文件中:__name__是等于__main__
# 2. 如果在模块中:__name__是等于模块名。如果还处在某个包下面
# 等于`包名.模块名`
# 3. 如果在包的__init__文件中,那么等于包的名字


https://www.fengoutiyan.com/post/17499.html

相关文章:

  • 用户管理模块功能
  • 英语基础模块1第二版
  • python模块
  • 语文基础模块
  • 模块
  • 管理
  • 英语基础模块1
  • python 内置模块
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機