您好,登录后才能下订单哦!
本篇内容介绍了“Python的py文件中有哪些细节”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
模块是一种以.py为后缀的文件,我们可以在.py文件中编辑Python代码,比如变量、函数、类、逻辑等等,满足某种特定的功能。
比如新建一个test_for_xxxx.py的文件,此时我们已经创建了一个test_for_xxxx模块,模块的名称是该.py脚本文件的名称。
声明代码
在文件的头部编写以下声明代码:
#!/usr/bin/python 或者 #!/usr/bin/env python #coding:utf-8
#!/usr/bin/python指定 【/usr/bin/python】目录下的Python解释器执行Python脚本。
#!/usr/bin/env python根据PATH环境变量中指定的第一个Python解释器,执行Python脚本。【推荐使用】
#coding:utf-8声明该文件的编码格式为 utf-8 。输入该代码就可以使py文件支持中文显示。
程序入口
在文件中添加如下代码:
if __name__ == "__main__"
if name == 'main’相当于Python模拟的程序入口,Python本身并没有这么规定,这只是一种编码习惯。当.py文件被直接运行时,if name == 'main’下的代码块将被运行;当.py文件以模块形式被导入时,if name == 'main’下的代码块不被运行。
包的概念
包是在模块之上的概念,为了方便管理而将文件进行打包,本质是一个目录。比如当两个功能不同的模块文件取了相同的名称时,无法区分导入的模块是哪个模块,就可以分别构造一个包,将模块放在包文件夹下,通过包.模块名来引用模块。通常一个包文件由__init__.py和其他诸多.py文件构成。该__init__.py内容可以为空,也可以写入一些包执行时的初始化代码。
包目录下除了模块文件为,也可以包含子目录,假如子目录中也有 init.py,那么它就是这个包的子包了。
常见的包结构:
package
├── init.py
├── module1.py
└── module2.py
有时候也会提到库的概念。Python库着重强调其功能性,可以视为具有相关功能模块、包的集合,也就是说具有某些功能的模块和包都可以称为库。比如Python内置了强大的标准库、还有像NumPy、Pandas这些强大科学计算功能的第三方库。
import的用法
接下来介绍下import的使用方法。模块的导入可以使用以下方式:
import 模块名称 as 自定义名称 # 可以避免冲突情况的发生 import 模块名称1 import 模块名称1,模块名称2
比如import test_for_xxxx中import本质上是将test_for_xxxx.py里面的所有代码解释编译之后赋值给了一个当前模块的同名变量test_for_xxxx。
当我们想要访问test_for_xxxx.py里面的name属性时,需要写test_for_xxxx.name,如果想要调用里面的add()函数时需要写test_for_xxxx.add()。导入模块后,模块所在文件夹将自动生成一个对应的__pycache__\test_for_xxxx.cpython-36.pyc文件。
所有被加载到内存的模块都放在sys.modules中,所以执行import时首先查询列表中是否已添加模块。如果已经添加至sys.modules中,那只需要将module的name添加到正在调用该module的本地空间中。如果还没有添加在sys.modules中,就需要在sys.path所有路径的目录中去按顺序查找该模块的文件,这些文件一般后缀为".py"、".pyo"、".pyc"、".pyd"、".dll",找到这些模块后就可以将这些模块添加到sys.modules中,再将module name导入到本地。
如果要导入模块内特定函数或者方法时,则可以使用from…import…,如下所示:
from 模块名称import 函数名称1, 函数名称2, 函数名称3 from module_name import * # 导入所有方法, 不建议使用,以避免冲突情况的发生
from…import…中import的本质就是将test_for_xxxx.py里面的name属性和add()函数代码解释编译之后赋值给了一个叫做name和add的变量中,如果调用add()函数直接调用即可。
另外,导入模块和导入包直接的区别是导入包只是执行了包下面的__init__.py文件而已。
“Python的py文件中有哪些细节”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。