前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途

模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途

作者头像
GH
发布2022-05-10 16:02:08
6350
发布2022-05-10 16:02:08
举报
文章被收录于专栏:python、mysql、go知识点积累

目录

模块的四种形式

Nike推荐的学数据分析与算法的书《利用python进行数据分析》

模块

相当于应用软件

  1. 系统自带应用软件
  2. 需要下载的应用软件
  3. 自定义的软件

模块的四种形式

  1. 内置模块:python解释器自带的模块,
  2. pip、pycharm安装的模块
  3. 自定义模块——》自定义代码 什么是模块? 模块——》实现功能——》代码——》
  4. 包(模块)

import和from...import

导入模块
  1. 开辟内存空间,内存空间命名为time
  2. 把time。py代码读入内存名称空间然后运行
  3. 通过time.方法名使用模块中的方法
from 模块名 import方法名
  1. 开辟内存空间,内存空间命名为time
  2. 把time。py代码读入内存名称空间然后运行
  3. 把sleep()读入当前文件名.py文件中(就是当前文件),因此可以直接使用方法名
如果想使用多个方法:
  1. from 模块 import 方法1,方法2
  2. from 模块 import * 这种方式会将模块所有的方法全部导入,容易与主程序变量名发生冲突,最好不要使用。
import的优缺点

优点:永远不会和变量名冲突

缺点:每次导入多输几个字

from 模块名 import 方法名的优缺点

优点:少输几个字

缺点:易发生冲突

自定制模块

自己写的一个.py文件就是一个自定义的模块,文件名就是模块名。模块名不要和python自带模块冲突。

用途:分文件存储代码——》函数与函数之间分开——》让代码块更加清晰——》不同的模块干不同的事情

循环导入问题

模拟问题的发生:

  1. 在pycharm里创建两个文件,m1.py、m2.py
  2. m1里写下如下文件
代码语言:javascript
复制
print('from m1.py')
from m2 import x 
y = 'm1'
  1. m2里写下如下文件
代码语言:javascript
复制
print('from m2.py')
from m1 import y

如果运行m1文件就会报错‘cannot import name 'x'’

解决方案

方案一

将对自定义的模块调用都放入函数中,这样就只有使用模块时才会调用模块,从而避免两个程序以相互调用的逻辑出现。

代码语言:javascript
复制
#m1.py
print('from m1.py')
def func1():
    from m2 import x
    print(x)
    
y = 'm1'
代码语言:javascript
复制
#m2.py
print('from m2.py')
def func1():
    from m1 import y
    print(y)
x = 'm2'
方案二

将对模块的导入放要调用的变量下面(以后都用方案一)

代码语言:javascript
复制
# m1.py
print('from m1.py')
y = 'm1'
from m2 import x
代码语言:javascript
复制
# m2.py
print('from m2.py')
x = 'm2'
from m1 import y

模块的搜索路径

模块的搜索顺序可以通过在主程序内读入一个模块,让主程序调用模块运行一段时间,在这段时间内将此模块删除来判断程序对模块路径的搜索顺序。(为了防止不必要的错误发生,以后程序的文件名尽量用英文命名)

  1. 内存
  2. 内置
  3. 自定义 内存——》内置——》自定义

Python文件的两种用途

python文件共有两种用途,一是执行文件,二是本当做模块导入。

编写好的一个python文件可以有两种用途:

  1. 脚本,用来被执行
  2. 模块,用来被导入
if _name_ == '__main__':的使用

if __name__ == '__main__':用于当调用模块时,不想让模块中的某个函数或者代码执行,也可以用于只让某个函数或者代码块执行。__name__是每个文件独有的,当该文件作为执行文件运行时,__name__等于'__main__';当该文件作为模块文件导入时,__name__等于文件名,if只是一个普通的判断语句。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模块的四种形式
    • 模块
      • 模块的四种形式
        • 导入模块
        • from 模块名 import方法名
        • 如果想使用多个方法:
        • import的优缺点
        • from 模块名 import 方法名的优缺点
        • 自定制模块
    • import和from...import
    • 循环导入问题
      • 模拟问题的发生:
        • 解决方案
          • 方案一
          • 方案二
          • if _name_ == '__main__':的使用
      • 模块的搜索路径
      • Python文件的两种用途
      相关产品与服务
      腾讯云 BI
      腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档