加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python基础8之自定义模块、if __name__==__main__:解释

发布时间:2020-12-16 23:55:44 所属栏目:Python 来源:网络整理
导读:table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0" tr td span style="font-size: 16px;"一、自定义模块与使用 /td /tr /table python模块说明:类似于函数式编程和面向过程编程,函数式编程则完成一个功
<tr>
<td><span style="font-size: 16px;">一、自定义模块与使用</td>
</tr></table>

python模块说明:类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),多个 .py 文件组成的代码集合就称为模块。

模块分三种:

  • 内置模块
  • 第三方模块
  • 自定义模块

开始自定义模块:

1.创建模块

自定义模块可以是单个以.py结尾的文件,也是可以多个,当有多个.py文件组成一个模块时我们需要以.用到__init__.py文件来初始化它。

demo:

新建一个命名my_name.py(注意不要和已经有的模块同名)的文件,如图:

代码块:

()

2.导入模块

导入模块大致有以下几种方式:

module.xx.xx module.xx.xx module.xx.xx *

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

demo:

wd

3.以上的demo都是在同一目录并且在"./"目录下,我们知道python找模块是通过path变量进行搜索,所以我们也可以将自己定义的模块直接放到python的path变量中,这样就可以直接导入了。

path路径获取方式:

/pyproject/mode2/,,,,,,]

4.不同目录间进行模块调用。

场景:当我们开发了一个模块,要导入使用时候,发现目录根本不在path变量里面,无法导入,此时我们就需要动态的将当前文件的目录加载到path里面,sys.path是一个list,我们通过append方法追加进去。

demo:

=os.path.dirname(os.path.dirname(os.path.abspath(

<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">

在解释之前首先我们看下__name__这个变量存的是什么:

(

结果分析:当我们运行的程序的时候,__name__这个内置变量值就是__main__。

下面我们来看下导入模块时候__name__变量值:

test.py代码:

<span style="color: #0000ff;">print(<span style="color: #800000;">"<span style="color: #800000;">this is before if name:%s<span style="color: #800000;">"%<span style="color: #800080;">name<span style="color: #000000;">)
<span style="color: #0000ff;">if <span style="color: #800080;">name==<span style="color: #800000;">'<span style="color: #800000;">main<span style="color: #800000;">'<span style="color: #000000;">:
<span style="color: #0000ff;">print(<span style="color: #800000;">"<span style="color: #800000;">this is after if name:%s<span style="color: #800000;">"%<span style="color: #800080;">name)

导入test模块并执行

test结果:this is before if __name__:test

可以看到,此时变量__name__值为模块名,并没有执行if中的语句,结果只有一条。

综上分析:

if __name__=='__main__'说白了就是判断__name__变量是不是等于__main__,当执行文件本身时候__name__变量等于main,此时判断成立并执行判断语句中的代码,当调用该模块的时候__name__并不等于__main__条件不成立,不执行判断下面的预计,可以认为为了调试模块,在模块导入的时候并不执行if下面的语句。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读