1 Python主函数main函数的作用

 欢迎来到@一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力

对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426@qq.com 。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

    专栏:

文章概述:对Python主函数main函数的作用 的介绍

关键词:Python主函数main函数的作用

本文目录

Python的main函数

实际操作一下

应用场景

原理分析:

Python的main函数

Python不需要main函数,也能运行代码,为什么还要设计main函数?

if __name__ == '__main__':

实际操作一下

让我们先写一个脚本,mylibrary.py

def add(x,y):
  return x+y


def sub(x,y):
  return x-y


def hello():
  print("Hello World")

现在我们在mylibrary中测试一下,看看输出啥

print(__name__)

会输出__main__

如果我们想要在其它脚本中使用这些函数,我们需要先在其它脚本中导入,mylibrary.py

import mylibrary

mylibrary.hello()
print(mylibrary.add(80, 90))

看看返回啥?

在其他模块通过导入这个含有print(__name__)的代码后右键运行的话,返回的是mylibrary

在mylibrary.py中写入

在其他模块中导入这个模块的时候运行的时候,返回的名字叫mylibrary不等于__main__

应用场景

如:

我要测试一下mylibrary这个模块的功能,我希望只有我这个测试这个模块的时候能够调用这个测试函数main()

开发者常常喜欢去再定义一个叫main的普通函数,然后在主函数中去调用普通的main函数


def sub(x, y):
    return x-y

def hello():
    print("Hello World")

def main():
    myvalue = 10

    print(add(myvalue, 20))
    print(__name__)
    hello()

if __name__ == '__main__':
    main()

在35_Python之main函数.py中导入这个模块,运行

from mylibrary import hello, add

hello()
print(add(80, 90))

原理分析:

这里的关键是我们需要知道在导入模块的时候,python背后做了什么?

事实上它会执行导入的模块/脚本中的所有代码行!

所以也就是说如果我们在mylibrary.py脚本中写了比如print('TEST')语句,你将会在执行main.py脚本时一开始就看到控制台输出的第一行就是TEST。

那么我们如果想直接右键执行mylibrary.py脚本的时候,看到打印语句,但是其它脚本导入mylibrary.py则不会执行的话,我们就需要main函数。

mylibrary.py脚本中添加下面一行代码

print(__name__)

然后在main.py中执行,会打印mylibrary,而在mylibrary.py中执行,则会打印__main__,这就是为什么python的主函数是如下样子的原因:

if __name__ == '__main__':
  print('TEST')

可为什么要再定义一个叫main的普通函数,然后在主函数中去调用普通的main函数呢?

如果不定义main函数,代码如下

def hello():
  print("Hello World")
  print(myvalue)


if __name__ == '__main__':
  myvalue = 10
  hello()
  print(add(10,20))
  print(sub(10,20))

这时代码运行不会有任何问题,可是myvalue确是一个global全局变量!即使跨脚本导入也是,这样会很容易带来一些问题,容易产生错误,或者也没有那个必要,就是说为了测试代码额外的多了全局变量。

这就是为什么高手更原因加上普通的main函数的原因!

测试一下如果就这样写然后导入到其他模块,运行一下,结果如下:

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值