5.模块

本文深入探讨Python中的模块与包的概念,包括如何创建和使用模块,理解sys模块的功能,按字节码编译的.pyc文件的作用,以及如何利用from...import进行特定功能的导入。此外,还详细解析了模块的_name_属性,介绍了编写自定义模块的方法,以及如何使用dir函数查看模块内的定义。最后,文章解释了包的组织结构及其在Python项目中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间:2018-12-9 13:40:04

----------------------------------------------------------

1、方法

   可以创建一个包含函数与变量的py文件

   可以用C语言等编写python模块,编译后,在python中使用

import sys#通过import导入sys模块

print('The command line arguements are:')
for i in sys.argv:
    print(i)

print('\n\nThe pythonpath is ',sys.path,'\n')

  sys模块包含于python解释器及其环境相关的功能,系统功能。

sys.argv通过使用点号予以指明,也就是sys.argv这样的形式。这是一系列字符串的列表。

2.按字节码编译的.pyc文件

        将python转换成中间形式的文件,这些文件独立于运行平台。

3。from...import

       如果想直接将argv导入程序中,而不是每次都输入sys.argv,可以使用

from sys import argv
print('The command line arguements are:')
for i in argv:
    print(i)

from math import sqrt
print('square root of 16 is:',sqrt(16))

4.模块的_name_
    首先弄清楚__name__里面保存的变量是什么,如果在当前主模块中直接输出,则为__main__,这样的判断可以知道当前是不是主模块,是的话执行if后面的语句块。

print(__name__) #输出main

  若当前模块是来自其他模块导入的,即当前模块非主模块,那么__main__里面存的就是被导入模块的名字。

  (1)新建一个demo.py

def test():
    if __name__ == '__main__':
        print('程序自身在运行')
        print('__name__ =', __name__)
    else:
        print('我来自另一模块')
        print('__name__ =', __name__)

test()

   运行结果为:

程序自身在运行
__name__ = __main__

(2)新建一个main,py,并导入demo

import demo#注意这里不加后缀

demo.test()

if __name__ == '__main__':
    print('这是当前模块')
    print('__name__=',__name__)

这是运行结果为:(注意demo被执行了两次)

 我来自另一模块
__name__ = demo
我来自另一模块
__name__ = demo
这是当前模块
__name__= __main__

通过这种判断可以知道当前是不是主函数,让python分清哪些是主函数的模块,并只在主函数中运行指定的语句。

参考:https://www.cnblogs.com/1204guo/p/7966461.html

参考:https://blog.youkuaiyun.com/w_linux/article/details/78236316

5.编写自己的模块

 先写一个子模块:

#mymodule.py
def say_hi():
    print('hi, this is my module')#定义一个函数

__version__ = '0.1'#给一个变量赋值

导入主模块方法1:

#mymoduledemo.py
import mymodule

mymodule.say_hi()
print('version=',mymodule.__version__)

导入方法2:

#mymoduledemo2.py
from mymodule import say_hi,__version__
say_hi()
print('version = ',__version__)

 这两种方法结果是一样的,但是有一个区别:若主函数mymoduledemo2中本身就有__version__或者say_hi()这两个名称时,会发生冲突,所以还是第一种比较好。

 另外可以用:

from mymodule import *

 将导入say_hi等所有公用名称,但不会导入__version__,因为以下划线开头。

6.dir函数

     返回对象所定义的名称列表。比如dir(模块),则返回这里面定义的函数、类与变量。

     不加参数dir()则返回当前模块的名称列表。

7.包

  是一个分层次的文件目录组织结构。包 包含模块与一个特殊文件(__init__.py)。__init__.py用于标志当前文件是一个包。

-----------------------------------------------------------------------

时间:2018年12月9日19:38:45

进度:77/153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值