22 模块原则

原则

  • 每一个模块,当它被导入的时候应该符合其所有的代码都应该可以被顺利执行
  • 导入文件时,其所有未有任何缩进的代码都会被执行一遍!
举例:

模块1p1

def func():
    print("哈哈哈")

print("ooooo")

导入:

import p1

print("*" * 10)

结果

ooooo
**********

再例子:

p1:

def func():
    print("哈哈哈")

print("ooooo")
func()

导入

import p1

print("*" * 10)

运行结果:

ooooo
哈哈哈
**********

为此

这便会有问题,在实际开发中,怎么解决模块的测试程序(主程序)再被导入的时候,不被执行呢?

这里便引入__name__魔法方法

__name__:

  • 文件作用测试程序是否可执行时候,它的值永远是'__main__',是字符串哦!
  • 文件作用是被作为模块进行导入的时候,它的值便是文件名字

比如:

p1:

def run():
    print("哈哈")
   
print(__name__)    
run()          #测试run()程序是否可执行
运行结果:
    __main__
    哈哈

被导入呢?

import p1
print("*" * 10)

执行结果
p1
哈哈
**********

看见没有?print(__name__)中的值变成了p1,即文件名字

那么,我们继续上面的话题,如何文件中起着测试程序是否可执行作用的代码在被导入的时候不被执行呢?

(有人看到这可能比较懵逼,什么测试?,什么可执行?,其实当我们开发一个项目时,一个项目是由很多个模块组成的,而每个模块又可能由不同的人写,那么书写模块的人为了该模块再被导入的时候可以被顺利执行,他自己肯定要首先执行一遍,那么执行的程序测试程序,即主程序)

我们可以用判断语句:

举例:

文件名字:p2

def func():
    a = "小猫"
    b = "小狗"
    return "%s在某个不经意的时刻便爱上了%s"%(a,b)
    
def func1():
    a = "男人"
    b = "女人"
    return "%s 的责任就是让 %s 放心"%(a,b)

if __name__ == '__main__':
    print(func())
    print(func1())
    
'''
第十一行以后并不是标准的写法
应该写成
def main():                          #用来写测试程序
	print(func())
    print(func1())
    
if __name__ == '__main__':           #用来判断
	main()
'''

导入:

import p2

print("*"*10)

结果:
    **********
import p2
print(p2.func())
print(p2.func1())
print("*"*10)
结果:
    小猫在某个不经意的时刻便爱上了小狗
	男人 的责任就是让 女人 放心
	**********

大哥们?懂了吗

模块标准语法:

def func():
    pass

def func():
    pass

def func():
    pass

def func():
    pass

def func():
    pass

def main():
    pass
if __name__=="__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捕获一只小肚皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值