Python入门(四)——模块,__name__属性,dir()函数,包的概念

一、模块

模块其实用自己的话说就是,你先创建一个test.py的文件(里面包含函数与变量等),然后再创建一个test2.py文件,在开头用import引入test.py,这样就可以在test2.py中使用test.py的函数了

实例:

先创建test.py:(以下是代码内容)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13

def getdemo():
    print('this is demo')

再创建test2.py:(以下是代码内容)(引入test模块)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13

import test

test.getdemo()

跑以下test2.py得到输出:this is demo

引入模块不用把文件名后缀加进去。当然python有很多标准库中的模块,比如sys.py模块(引入即import sys即可)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
import sys

#sys.argv 是一个包含命令行参数的列表。
for i in sys.argv:
    print(i)

#sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
print(sys.path)

sys模块下的函数(其他python标准库中的模块也有很多函数)
这里写图片描述

不一定用import引入模块,也可以from..import,不过我这里就不是很推荐了


二、from..import语句

如果需要sys模块中的argv变量导入自己的程序(避免每次都有输入sys.,即sys.argv),那么就可以通过from sys import argv来实现(不建议)


三、_ name_属性

每个模块都有一个名称,而模块中的语句可以找到它们所处的模块名称。这对于确定模块是独立运行还是被导入进来运行有很大的辨识度!~

_ name_是啥?

1、_ name_是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。(即为系统变量)

2、如果是自身模块在执行,那么_ name_就等于 __ main ,如果是通过import调用的模块,那么此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian:”后面的内容

实例:

定义一个模块demo.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def main():
    if __name__ =='__main__':
        print('程序自身在运行')
    else:
        print('我来自另一模块')

main()

print(__name__)

如果直接执行(可以看出此时name==main

输出:
D:\Py3.6\python.exe D:/Pylearn/demo.py
程序自身在运行
__main__

新建一个py文件,引入demo.py模块

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
import demo

demo.main()

print(demo.__name__)

#输出:(可以看出此时__name__!=__main__,且__name__==模块文件名)
#D:\Py3.6\python.exe D:/Pylearn/getdemo.py
#我来自另一模块
#demo
#我来自另一模块
#demo

四、dir()函数

dir()函数能够返回由对象所定义的名称列表,例如:这一对象是一模块,则dir()函数可以找到模块内定义的所以名称(含函数、类、变量),以一个字符串列表的形式返回

dir()是有参数的,如果参数是模块名称(当然参数也可以是类,函数等),那么将返回这一指定模块的名称列表。如果没有参数,那么函数将返回当前文件(即当前模块的名称列表):比如你在test2.py下指定dir(test),那么返回test模块的名称列表,如果是dir(),那么返回test2.py名称列表

实例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
import sys

print(dir(sys))
a=1
b=2
def func():
    pass

print(dir())

这里写图片描述


五、包(概念)

目录只有包含一个叫做 _ init _.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。,也不管 _ init _.py内容是啥,python解释器看到这个文件就认为是包了

假设你想创建一个名为“word”包,这个word下含有“asia”,“africa”等其他子包,同时这些子包都包含诸如“india”,“madagascar”等模块。(注意得有init.py)

下面是文件夹结构(即包结构)

这里写图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值