专栏首页python-爬虫模块导入及使用,关键字,模块搜索路径,python文件的两种用途

模块导入及使用,关键字,模块搜索路径,python文件的两种用途

06.05自我总结

一.模块导入及使用

1.模块导入的两种方式

我们拿time模块并使用其中的time功能进行举例

a)第一种

import time
print(time.time)

import首次导入模块发生了3件事:

  1. 打开模块文件
  2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
  3. 在程序中会有一个模块名称指向模块名称空间(如果他是import time as f)则是f指向模块空间
  4. 在当前执行文件中拿到一个模块名

b)第二种

from time import time
print(time)

from...import...首次导入模块发生了3件事:

  1. 以模块为准创造一个模块的名称空间
  2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
  3. 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
  • 优点:不用加前缀,代码更加精简
  • 缺点:容易与当前执行文件中名称空间中的名字冲突

c)相同点和不同点

相同点:

  1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间
  2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关

不同点

  1. import需要加前缀;from...import...不需要加前缀

2.关键字

_all_

如果一个模块的文件内写有_all_
import 模块名字,默认导入所有模块
而当模块中出现_all_时候,他只会导入_all_后面列表内的名称

二.模块循环导入

1.情况

创建两个模块

# m1.py
print('from m1.py')
from m2 import x

y = 'm1'
# m2.py
print('from m2.py')
from m1 import y

x = 'm2'

应用程序导入模块

# run.py
import m1

2.解决办法

第一种

把m1中吧form m2 import x 将能找到的y放置form m2 import x,上面,让他在没有导入模块的时候就发现y从而不会寻找
# m1.py
print('from m1.py')
y = 'm1'
from m2 import x

第二种

把from m2 import x 用函数把他变成局部,文件加载顺序先全局在局部
def f1():
    from m2 import x
y = 'm1'
f()

三.模块搜索路径

去内存中找去→内置模块中找→去环境变量中找

打印环境变量

import sys
print(sys.path)

四.python文件的两种用途

1.模块文件

2.运行文件

搜索路径以运行文件为基准

五.关键字_name_

在执行文件中_name_会被读取成'__main__'

在导入模块的时候__name__会变成模块名字

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序登入流程

    小小咸鱼YwY
  • 自学前端第三天

    小小咸鱼YwY
  • 爬虫练手,爬取新浪双色彩,信息并进行分析

    小小咸鱼YwY
  • 前端测试题:module模块中,对下列语句的描述,错误的是?

    使用import命令的时候,用户需要知道所要加载的变量名或函数名,否则无法加载。

    舒克
  • Angular 正式环境禁止console显示

    开发人员在开发过程中有意无意的在代码中使用console.log查看变量内容进行调试。 在正式环境最好屏蔽掉这些信息。更好的习惯是console.log用完就...

    mafeifan
  • 如何解决跨域问题?

      如何解决跨域问题?首先我们需要知道什么是跨域,跨域指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript 施加的安...

    IT可乐
  • 模型评估 | Precision-Recall Curve

    最近接手的一个项目,最后被要求给出查准率-查全率曲线(Precision-Recall Curve)以及曲线对应的查准率、查全率数值序列。查准率-查...

    小石头记
  • Nodejs中使用ioredis库

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings),...

    ccf19881030
  • java中用MessageFormat格式化json字符串用占位符时出现的问题can't parse argument number

    在MessageFormat.format方法中组装jason数据字符串:{code:"w1",des:"w2"},起止分别有左大括号和右大括号。 直接写的点位...

    欢醉
  • 【iOS 开发】用泛型简化 instantiateViewController

    使用 storyboard 的时候,我们经常会写出下面这样的代码,用来跳转到其他页面

    KyXu

扫码关注云+社区

领取腾讯云代金券