python中__init__和__name__的使用说明

python __函数 跨文件夹引用

1. name

被调用模块.__name为被调用模块的模块名,若为直接执行函数,name = 该’main’。

运用最广泛的语句为:if name == ‘main’:

这段语句的目的为使得该py文件既可以自我执行又可以被调用。

eg.py

  def test():

    print('this is a test')

  if __name__ == '__main__':

    test()

这段代码中,可以使其他py文件调用eg.py时,因为此时__name__为直接执行的文件名,if不执行,同时又可以调用test()方法;与此同时,当eg.py直接执行时,该__name__为’main’,该if执行,可以看做java中的main函数;

2. init

__init__通常以两种方式出现在py中:文件、函数。__init__作为一个独立的py文件在python文件中出现,其主要目的为该文件夹中的py文件独立成为一个包,独立的py包中均包含该文件。通常来说,__init__文件为空;其次__init__作为函数创建一个新的class,与__new__操作不同在于,__new__函数将返回一个该class的实例。详细可以查看:https://www.cnblogs.com/Lands-ljk/p/5880483.html

在这里遇到一个问题,vs code环境下python跨文件夹引用:大致结构如下:

project:

--app.py

--folder

  mod1

  mod2

在这里通过project下app.py文件引用同级folder中mod1模块,同时mod1对mod2有引用,此时需要对folder中创建空文件___init__.py,相应的import语句要进行修改,代码如下:

app.py:

from folder.mod1 import mod1_service

mod1_service()


mod1:

from folder.mod2 import mod2_service

def mod1_service():

  mod2_service()
 
mod2:

def mod2_service():

  print('mod import success')

如果在mod1中没有将folder.写全,会发现该找不到mod2,寻求原因:通过import sys print(sys.path) 看到当运行app.py时文件以/project为引用的目录,不会进入folder中,这时需要对该路径进行标注。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值