python中main方法的用法_python __main__和__init__正确用法
因为我对python很新,所以语言的这个特殊方面对我来说仍然是不透明的.
因此,假设我的项目包含许多包含代码的文件和两个“服务”文件:__ init__.py和__main__.py
在__init__.py中只有:
if __name__ == "__main__":
import package.__main__
__main__.main()
在__main__.py中如下:
import package # ok
import package2 # ok
def main():
package.myfunc1() # can't find reference to myfunc1
package2.myfunc2() # can't find reference to myfunc2
所以我的问题是:为什么两个包都可见而内部函数不是?我已经阅读了谷歌的一些源代码,但仍无法发现它与我的代码之间的区别.我正在使用Python 3.5.1
我假设,__ init__中的代码将启动__main__,而__ main__将启动我的其余功能.
UPD
好吧,如果我把某人与我的代码混淆了,我很抱歉.
支持__init__.py的想法是该文件是在第一个包添加时由IDE创建的,因此我决定在第一个github条目中找到code(我的错,我可以通过复制粘贴重新使用它) ).
严格来说,我只需要python构造,相当于这个C代码:
header.h
void func1(){...} //in code1.c
void func2(){...} //in code2.c
#include "header.h"
int main() //in main.c
{
func1();
func2();
return 0;
}
以下代码
import package
import package2
if __name__ == "__main__":
package.myfunc1()
package2.myfunc2()
与上述问题完全相同,因此问题不在__init__.py中
解决方法:
我做了:
foo/
__init__.py
__main__.py
这2个文件是:
import __main__
print('in init')
print('init name',__name__)
和
print('main name',__name__)
print('in main')
if __name__=='__main__':
print('in main main block')
如果我直接运行__main__:
1538:~/mypy$python foo/__main__.py
('main name', '__main__')
in main
in main main block
如果我调用目录,它也会做同样的事情.它不会导入__init__.py.
1541:~/mypy$python foo
('main name', '__main__')
in main
in main main block
但是从shell中,它会加载两个文件
1542:~/mypy$python
....
>>> import foo
('main name', 'foo.__main__')
in main
in init
('init name', 'foo')
但是它不使用__main__的if __name__块 – 名称不对,它现在是foo .__ main__.
相关文档
Execute the Python code contained in script, which must be a filesystem path (absolute or relative) referring to either a Python file, a directory containing a __main__.py file, or a zipfile containing a __main__.py file.
This module represents the (otherwise anonymous) scope in which the interpreter’s main program executes — commands read either from standard input, from a script file, or from an interactive prompt. It is this environment in which the idiomatic “conditional script” stanza causes a script to run:
我用__init__.py创建了另一个目录但没有main:
1558:~/mypy$python foo1
/usr/bin/python: can't find '__main__' module in 'foo1'
1558:~/mypy$python
...
>>> import foo1
('in init', 'foo1')
>>>
导入工作,但我无法运行该目录.
标签:python,main,initialization
来源: https://codeday.me/bug/20190608/1201490.html
python中main方法的用法_python __main__和__init__正确用法相关推荐
- python中main方法的用法_Python中的main方法
估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看.但事实上python中是没有你理解中的"main()"方法的.言归正传 if name = ...
- python中使用函数的优点_Python基础之函数基本用法与进阶详解
本文实例讲述了Python基础之函数基本用法与进阶.分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数 ...
- python中的方法是什么_Python方法
1. 对象 = 属性 + 方法 对象是类的实例.换句话说,类主要定义对象的结构,然后我们以类为模板创建对象.类不但包含方法定义,而且还包含所有实例共享的数据. 封装:信息隐蔽技术 我们可以使用关键字 ...
- python中的figure什么意思_Python Matplotlib.figure.Figure.text()用法及代码示例
Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展. Figure模块提供了顶层Artist,即Figure,其中包含所有绘图元素.此模块用于控制所有图元的子图和顶层容器 ...
- python中values是什么意思_Python values()与itervalues()的用法详解
dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Li ...
- python中的方法需要定义_Python中规范定义命名空间的一些建议
API的设计是一个艺术活.往往需要其简单.易懂.整洁.不累赘. 很多时候,我们在底层封装一个方法给高层用,而其它的方法只是为了辅助这个方法的. 也就是说我们只需要暴露这个方法就行,不用关心这个方法是怎 ...
- python中的方法什么意思_python中的函数和方法的区别是什么
python中的函数和方法的区别: 1.函数要手动传self,方法不用传self. 2.如果是一个函数,要用类名去调用,如果是一个方法,要用对象去调用. 举例说明:class Foo(object): ...
- python中for循环的代码_Python for循环及基础用法详解
Python 中的循环语句有 2 种,分别是 while 循环和 for 循环,前面章节已经对 while 做了详细的讲解,本节给大家介绍 for 循环,它常用于遍历字符串.列表.元组.字典.集合等序 ...
- python中os.path.isdir()和os.path.isfile()的正确用法
之前网上查找os.path.isdir()和os.path.isfile()的使用:发现很多是错误的,主要原因是,传入的参数不是绝对路径. 先介绍一下os.listdir()方法,此方法返回一个列表, ...
最新文章
- C#String.PadLeft函数,文本对齐以及填补解决方案
- RocketMq namesvr 最佳实践
- 《JS权威指南学习总结--9.5 类和类型》
- Enterprise Services (COM+)服务组件开发异常分析
- 能够使用StringBuilder类的常用方法操纵字符串 1215
- C# 实现连连看功能
- pygame游戏_Pygame游戏——Pong游戏(三)
- 渐开线曲线方程c语言,proe常用曲线方程大全
- 路由器手机测试网速的软件,4个实用的无线路由器WiFi检测工具,让你网速又快又稳定...
- orcadcapture安装_电路原理图设计软件(OrCAD Capture CIS 中文版) 16.6 免费安装版
- 简单spring cloud服务升级实现
- 高可用架构演进之单元化
- python怎么降序输出结果_按降序打印Python
- LeetCode42题动态规划 - 接雨水
- 杨辉三角(C语言简单版)
- 怎么保护地球生物多样性
- SourceTree安装跳过注册
- 君子慎独,卑以自牧!
- 光谷 计算机专业 好的学校,距离光谷最近的十所高校,你的学校上榜了没?
- 【机器学习实战】利用sklearn中的随机森林对红酒数据集进行分类预测