模块的导入
2018-06-17 23:57:55来源:未知 阅读 ()
模块的种类
模块的存在方式
模块的使用方式
1 1、导入整个模块,并定义别名 (单模块的导入,推荐使用方式) 2 import module1 as s1 3 4 调用方法:module1.login() 5 as:是别名,也是s1.login() 6 7 8 9 2、导入指定目录下的模块,并定义别名 10 import dir_name.module1 as s2 11 调用方法:dir_name.module1.logout() 12 13 14 15 3、导入模块,并定义别名: 16 import day5_1.master as s3 17 调用方法:s3.master() 18 19 20 21 4、导入非sys.path目录下的模块: 22 sys.path.append('D:\\') 23 import order 24 调用方法:order.producer("alex") 25 26 27 28 5、用from导入指定函数:(单模块的导入) 29 from s4 import login 30 调用的时候:login() 31 32 注意: 33 只导入s4中的指定函数,python不会将所有s4代码加载到内存中。 34 而是只将s4中的login的函数加载到内存里
模块名的重要性
1、不要跟内置模块一个名。
2、不要重复模块名。
3、按照规范,大模块创建文件夹,小模块使用文件。
跨目录导入模块
一、跨目录导入的特点:
1、要通过环境变量找到调用的模块:
2、不能写死,以免跨平台的时候无法调用:
3、sys.path目录,可以使用sys.path.append('D:\\')将指定目录的模块添加到path列表里(类似于环境变量)
1 D:\软件\pychar\data\s13\day5 2 D:\软件\pychar\data 3 D:\软件\py3.5\python35.zip 4 D:\软件\py3.5\DLLs 5 D:\软件\py3.5\lib 6 D:\软件\py3.5 7 D:\软件\py3.5\lib\site-packages #第三方安装模块目录
1 print(__file__) 2 3 D:/软件/pychar/data/s13/Atm/bin/atm.py
2、动态的获取到程序的绝对路径(绝对路径)
1 import os 2 print(os.path.abspath(__file__)) 3 4 D:\软件\pychar\data\s13\Atm\bin\atm.py
3、获取当前目录。不要当前文件:(找到父集目录)
1 import os 2 print(os.path.dirname(os.path.abspath(__file__))) 3 print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 4 5 D:\软件\pychar\data\s13\Atm\bin 6 D:\软件\pychar\data\s13\Atm
4、将当前目录加入到变量里:
1 import sys,os 2 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 3 for i in sys.path: 4 print(i) 5 sys.path.append(BASE_DIR) 6 sys.path.insert(0,BASE_DIR) 7 8 print('\n') 9 ft = "{:*^100s}".format('添加BASE_DIR后的sys.path路径') 10 print(ft) 11 print('\n') 12 13 for i in sys.path: 14 print(i)
1 显示结果: 2 D:\软件\pychar\data\s13\Atm\bin 3 D:\软件\pychar\data 4 E:\python35\python35.zip 5 E:\python35\DLLs 6 E:\python35\lib 7 E:\python35 8 E:\python35\lib\site-packages 9 ***************************************添加BASE_DIR后的sys.path路径*************************************** 10 D:\软件\pychar\data\s13\Atm 11 D:\软件\pychar\data\s13\Atm\bin 12 D:\软件\pychar\data 13 E:\python35\python35.zip 14 E:\python35\DLLs 15 E:\python35\lib 16 E:\python35 17 E:\python35\lib\site-packages 18 D:\软件\pychar\data\s13\Atm
第三方模块的下载和安装
参考文献:http://www.cnblogs.com/wupeiqi/articles/5501365.html
一、安装方式:
import的本质
(2)、本质就是.py结尾的python文件
1 (1)、指定绝对路径的login模块导入check_auth功能函数 2 from shopping.core.login import check_auth,check_admin 3 4 (2)、从core目录下开始导入login模块 5 from core import login 6 7 (3)、当前目录的login模块下导入check_auth功能函数 8 from .login import check_auth
二、import的本质:(路径搜索和搜索路径)
1 1、import 模块名: 2 eg :import tset (test=‘test.py all code’) 3 实例: 4 import dy 5 dy.set() 6 dy.atc() 7 8 2、from 模块名 import 方法: 9 eg:from test import name (name='alex') 10 实例: 11 from dy import atc 12 atc()
(二)导入的类型和本质:
导入有两种类型:模块 、
1、导入模块的本质:就是把python文件解释了
2、导入包的本质:(路径搜索和搜索
(1)就是执行该包下的__init__.py
(2)路径搜索的位置为>>> import sys sys.path (从第一个逐步往后
(3)如果是夸模块导入,则需要添加导入模块的绝对路径到sys.
(4)import + 模块名,要通过from去寻找 ’包名‘,然后在import ’.py‘ 的模块文件。
1 mport sys,os 2 x = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 3 # sys.path.append(x) 4 sys.path.insert(0,x) 5 print(sys.path)
导入方法
(一),相同目录下的模块导入:
1、import module_name #导入本地单个模块 调用方式:module_alex.say_hello() module_alex.logging() 2、import module1_name,module1_name #导入本地多个模块 调用方式:module1_alex.say_hello() module2_alex.logging() #注释:凡是from开始的导入模块都可以直接调用 3、from module_alex import * #不推荐使用,如果模块名称相同,就会备覆盖掉(重名时本地模块优先,因为后者会覆盖掉前者的内存地址) 调用方法:say_hello() logging() 4、from module_alex import logging #导入module_alex模块下的,logging方法。 调用方法:logging() 5、from module_alex import logging as m1 #导入module_alex模块下的,logging方法,并自定义别名 调用方法:m1()
(二)、不同目录的模块导入:(重点)
a、添加路径: import sys,os x = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # sys.path.append(x) sys.path.insert(0,x) print(sys.path) b、导入模块: from bin import test from bin import foo from conf import conf from logs import slow_log
c、调用方法: slow_log.slow() conf.pz() print(test.name) test.loggin() test.mgs() foo.logger() foo.say_hello() d、显示结果: ['D:\\PyCharm\\data\\s13\\Atm', 'D:\\PyCharm\\data\\s13\\Atm\\core', 'D:\\python3.5\\lib\\site-packages\\setuptools-18.1-py3.5.egg', 'D:\\python3.5\\lib\\site-packages\\pip-7.1.0-py3.5.egg', 'D:\\PyCharm\\data', 'D:\\python3.5\\python35.zip', 'D:\\python3.5\\DLLs', 'D:\\python3.5\\lib', 'D:\\python3.5', 'D:\\python3.5\\lib\\site-packages'] log目录下的slow_log模块中slow方法 conf目录下的conf配置文件 bin目录下的test模块中name变量 bin目录下的test模块中loggin方法 bin目录下的test模块中mgs方法 bin目录下的foo模块中logger方法 bin目录下的foo模块中say_hello方法
(三)、同级目录下导入包:
(三)、同级目录下导入包: 1、设置包下的init路径: from . import test from . import foo 2、与包同级的文件中调用: #导入bin包下的test模块 from bin import test #调用test模块下的方法: 方法一: import bin bin.test.loggin() bin.test.mgs() 方法二:(推荐) from bin import test from bin import foo test.loggin() foo.logger() 3、显示结果: python 不同目录下的登录模块测试 同级模块导入测试
导入优化
一、优化:
1、在多个函数调用同一个模块中方法时,可以用 from 模块名 import 方法,这样可以减少扫描次数从而提高代码效率。
1 import test 2 def log(): 3 test.loggin() 4 print('log调用test.loggin的方法') 5 6 def user(): 7 test.loggin() 8 print('user调用test.loggin的方法') 9 10 log() 11 user() 12 13 14 可以变成: 15 from test import loggin 16 17 def log(): 18 loggin() 19 print('log调用test.loggin的方法') 20 21 def user(): 22 loggin() 23 print('user调用test.loggin的方法') 24 25 26 log() 27 user()
2、频繁调用同一个可以定义一个调用变量:
1 import test 2 loggin = test.loggin 3 def log(): 4 loggin() 5 # print('log调用test.loggin的方法') 6 7 def user(): 8 loggin() 9 # print('user调用test.loggin的方法') 10 11 12 log() 13 user()
python程序的目录划分:
├── README ├── atm #ATM主程目录 │ ├── __init__.py │ ├── bin #ATM 执行文件 目录 │ │ ├── __init__.py │ │ ├── atm.py #ATM 执行程序 │ │ └── manage.py #ATM 管理端,未实现 │ ├── conf #配置文件 │ │ ├── __init__.py │ │ └── settings.py │ ├── core #主要程序逻辑都 在这个目录 里 │ │ ├── __init__.py │ │ ├── accounts.py #用于从文件里加载和存储账户数据 │ │ ├── auth.py #用户认证模块 │ │ ├── db_handler.py #数据库连接引擎 │ │ ├── logger.py #日志记录模块 │ │ ├── main.py #主逻辑交互程序 │ │ └── transaction.py #记账\还钱\取钱等所有的与账户金额相关的操作都 在这 │ ├── db #用户数据存储的地方 │ │ ├── __init__.py │ │ ├── account_sample.py #生成一个初始的账户数据 ,把这个数据 存成一个 以这个账户id为文件名的文件,放在accounts目录 就行了,程序自己去会这里找 │ │ └── accounts #存各个用户的账户数据 ,一个用户一个文件 │ │ └── 1234.json #一个用户账户示例文件 │ └── log #日志目录 │ ├── __init__.py │ ├── access.log #用户访问和操作的相关日志 │ └── transactions.log #所有的交易日志 └── shopping_mall #电子商城程序,需单独实现 └── __init__.py
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 导入包 2019-08-13
- python3 enum模块的应用 2019-08-13
- 利用python自动生成verilog模块例化模板 2019-08-13
- Python random模块(以后用到一个再更新一个) 2019-07-24
- xadmin进行全局配置(修改模块名为中文以及其他自定义的操作 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash