小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题
测试题:
0. __name__属性指的是在调用该模块的时候调用的函数名称,方便在模块的被调用的时候,模块内部被调用的函数不会被运行。
1. 当模块作为主程序运行的时候,__name__属性的值是“__main__”,当该模块被调用导入到另一个模块的时候,"__name__"属性值为模块名称。
2. 通过sys模块的path变量显示搜索路径:
import sys
sys.path
3. 将相关模块文件的路径加入到搜索路径中,例如:
import sys
sys.path.append("*****") # *****表示模块坐在路径
但是这里小甲鱼推荐把包最好都存放在python的安装路径里面的sitepackages文件夹内,顺便说一下,安装包的时候,比如numpy直接在官网下载wheel源代码文件然后存入sitepackages文件夹内就可以直接调用numpy这个包里面的所有模块和函数了,再次感谢开源的好处。
4. urllib属于包,request属于包里面的模块
5. 包其实就是在普通文件夹内添加了文件“__init__.py”的模块文件,文件夹内拥有模块,此时文件夹就是一个包了,所以文件夹是否是包的最大区别就是是否拥有“__init__.py”模块。其中这个__init__.py文件就是一个初始化文件,可以为空,也可以写入一些初始化的代码。
动动手:
0. 修改以下程序:
# a.py
import b def x():
print('x') b.y() # b.py
import a def y():
print('y') a.x() 执行 b.py 引发下边异常:
>>>
Traceback (most recent call last):
File "/Users/FishC/Desktop/b.py", line 1, in <module>
import a
File "/Users/FishC/Desktop/a.py", line 1, in <module>
import b
File "/Users/FishC/Desktop/b.py", line 6, in <module>
a.x()
AttributeError: 'module' object has no attribute 'x'
最好的方式,是单独建立一个模块,用来调用a和b模块,因为a与b两个模块不会被互相调用,否则因为任何一个模块的不完整而报错:
# test.py import a
import b
a.x()
b.y()
还有一个方式,如果不想建立一个单独的模块,可以这样(程序就不会报错了):
# a.py
# import b def x():
print('x')
# b.py
import a def y():
print('y') if __name__ == "__main__":
a.x()
小甲鱼第51讲:《__name__="__main__"、搜索路径和包》课后练习题的更多相关文章
- python基础】——python添加模块搜索路径和包的导入
方法一:函数添加1 import sys2 查看sys.path3 添加sys.path.append("c:\\") 方法二:修改环境变量w用户可以修改系统环境变量PYTHONP ...
- Python 学习 第十五篇:模块搜索路径和包导入
在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...
- python的搜索路径与包(package)
python的搜索路径其实是一个列表,它是指导入模块时,python会自动去找搜索这个列表当中的路径,如果路径中存在要导入的模块文件则导入成功,否则导入失败: >>> import ...
- 小甲鱼零基础入门学习python--课后作业
[小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...
- 小甲鱼零基础入门PYTHON
000.愉快的开始 00:17:37 ☆ 001.我和Python的第一次亲密接触 00:13:26 ★ 002.用Python设计第一个游戏 00:24:00 ★ 003.小插曲之变量和字符 ...
- Python3零基础入门学习视频+源码+课件+习题-小甲鱼
目录 1. 介绍 2. 目录 3. 下载地址 1. 介绍 适用人群 完全零基础入门,不需要任何前置知识. 课程概述 本系列教程面向零基础的同学,是一个深入浅出,通俗易懂的Python3视频教程. 前半 ...
- 6.移动端自动化测试-小知识 if __name__==’__main__:是什么意思?
1 引言 在Python当中,如果代码写得规范一些,通常会写上一句“if __name__==’__main__:”作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪 ...
- 小甲鱼python视频第九讲(课后习题)
1.列表里可以存放什么东西? 可以存放任何的数据类型, list1 = ['我爱你','i love you',1314] print(list1) 2.向列表中添加元素 append(将参数作为一个 ...
- 小甲鱼python视频第八讲(课后习题)
1.for循环的使用,注意下面代码的区别 for i in range(0,10,2): print("i love you") for i in range(0,10): pri ...
随机推荐
- Node.js之Promise维护(同步)多个回调(异步)状态
金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉..NET程序员初用node.js最需要适应的就是异步开发, 全是异步,常规逻辑下遍历列表都是异步,如何保证 ...
- Nuget~管理自己的包包~丢了的包包快速恢复
之前写过一篇Nuget~管理自己的包包的文章,今天来讲Nuget的另一个东西,就是找回丢失的DLL,我们在引用包包后,在当前解决方案根目录就生成一个packages的目前,里面有我们从nuget下载的 ...
- angularjs onchange
HTML <div ng-controller="TestCtrl"> <select ng-change="change(x)" ng-mo ...
- linux 2>&1
2>&1就是用来将标准错误2重定向到标准输出1中的.此处1前面的&就是为了让bash将1解释成标准输出而不是文件1.至于最后一个&,则是让bash在后台执行 例如:/us ...
- 项目管理工具之Git使用说明
1.下载Git客户端工具 http://msysgit.github.com/ 2.安装msysgit 下一步 同意GNU协议 选择安装位置 选择TrueType Front,下一步 不创建启动文件 ...
- PHP模拟发送POST请求之五curl基本使用和多线程优化
今天来介绍PHP模拟发送POST请求的重型武器——cURL函数库的使用和其多线程的优化方法. 说起cURL函数,可谓是老生常谈,但网上许多资料都在关键部分语焉不详,列出一大堆手册上的东西,搞得我入门时 ...
- Java异常信息处理
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.jun ...
- fis自动化部署
1,自动部署到远程服务器 (1),参考:https://github.com/fex-team/receiver (2),接收服务代码目录:/var/www/html/fis/receiver-mas ...
- Eclipse如何安装JD-Eclipse反编译插件
一.Eclipse在线安装JD-Eclipse反编译插件 1.在eclipse的help—>Install New Software...中添加新软件开发,添加它的源: name:jd-ecli ...
- 《TCP/IP详解 卷一》读书笔记-----TCP连接建立
1.在每个TCP报文段中,头部的flag字段里的SYN,FIN,RST,PSH可以多个有效,并没有限定为必须只有一个 2.TCP连接建立过程: 1)客户端发送一个SYN报文段,其中包含了客户端要传送的 ...