相关疑难解决方法(0)

我应该在简单的Python脚本中使用main()方法吗?

我有很多简单的脚本来计算一些东西.它们只包含一个模块.

我应该为它们编写主要方法并使用if __name__构造调用它们,还是只将它们转储到那里?

两种方法有什么优点?

python

37
推荐指数
4
解决办法
3万
查看次数

在Python中什么是全局声明?

什么是全球声明?它是如何使用的?我读过Python的官方定义 ;
但是,它对我来说没有多大意义.

python global

33
推荐指数
1
解决办法
3万
查看次数

为什么JavaScript不需要main()函数?

许多编程语言都需要一个特殊的用户编写函数来标记执行的开始.例如,在C中,此函数必须始终具有名称main().但是,在JavaScript中,不需要这样的功能.

在JavaScript中缺少这种专用顶级函数的逻辑原因是什么?我知道这是某种理论问题,但我无法在网上找到答案.

javascript

31
推荐指数
3
解决办法
4万
查看次数

使用"-m"选项"将库模块作为脚本运行"是什么意思?

我是Python的新手(也是编程人员),虽然有很好的文档,但我无法理解-m指令的确切含义(正是在创建虚拟环境时:python3 -m venv my_env.

据我所知,从文档中可以看出,它代表"将库模块作为脚本运行":实际上这是我无法弄清楚的概念,没有运行命令的区别是什么-m.

而且,这是Python 3的一个特点吗?

python python-3.x

31
推荐指数
1
解决办法
7019
查看次数

Python中的"Boilerplate"代码?

谷歌有一个Python教程,他们将样板代码描述为"不幸",并提供了这个例子:

#!/usr/bin/python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main() function
def main():
  print 'Hello there', sys.argv[1]
  # Command line args are in sys.argv[1], sys.argv[2] ..
  # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

现在,我听说样板代码被描述为"看似重复的代码,一次又一次地出现以获得一些似乎应该更简单的结果"(例子).

无论如何,在Python中,上面例子中被认为是"样板"代码的部分是:

if __name__ == '__main__':
  main()
Run Code Online (Sandbox Code Playgroud)

现在,我的问题如下:

1)Python中的样板代码(如提供的示例)是否与我提供的定义具有相同的定义?如果是这样,为什么?

2)这个代码甚至是必要的吗?在我看来,代码运行是否有主要方法.是什么让这个代码变得更好?它更好吗? …

python boilerplate

30
推荐指数
2
解决办法
4万
查看次数

什么是相当于Python的`if __name__ =='__ main __'的bash?

在Bash中,我希望能够同时获取脚本并执行该文件.什么是Bash相当于Python的if __name__ == '__main__'?

我没有在Stackoverflow上找到关于这个主题的现成问题/解决方案(我怀疑我的问题是这样的方式与现有的问题/答案不符,但这是我能想到的最明显的方式.问题是因为我的Python经验).


ps关于可能的重复问题(如果我有更多时间,我会写一个更短的回复):

该链接到问题问:"如何检测如果脚本正在采购",但这个问题是问"你怎么创建一个bash脚本,既可以是采购和运行的脚本?".这个问题的答案可能会使用上一个问题的某些方面,但有其他要求/问题如下:

  • 一旦检测到脚本被采购,不运行脚本的最佳方法是什么(并避免意外的副作用(除了导入感兴趣的功能),如添加/删除/修改环境/变量)
  • 一旦你检测到脚本正在运行而不是源代码实现你的脚本的规范方法是什么(把它放在一个函数中?或者只是把它放在if语句之后?如果你把它放在if语句之后它会有 - 影响?
  • 我在Bash上发现的大多数谷歌搜索都没有涵盖这个主题(一个可以同时获取和执行的bash脚本)实现这个的规范方法是什么?这个话题没有被涵盖,因为它是沮丧还是不好?有陷阱吗?

bash

29
推荐指数
4
解决办法
3380
查看次数

如何组织包含多个包的python项目,以便包中的每个文件仍然可以单独运行?

TL; DR

这是一个示例存储库,如第一个图(下面)中所述设置:https://github.com/Poddster/package_problems

如果你可以在项目组织方面让它看起来像第二个图,并且仍然可以运行以下命令,那么你已经回答了这个问题:

$ git clone https://github.com/Poddster/package_problems.git
$ cd package_problems
<do your magic here>

$ nosetests

$ ./my_tool/my_tool.py
$ ./my_tool/t.py
$ ./my_tool/d.py

 (or for the above commands, $ cd ./my_tool/ && ./my_tool.py is also acceptable)
Run Code Online (Sandbox Code Playgroud)

或者:给我一个不同的项目结构,允许我将相关文件('包')组合在一起,单独运行所有文件,将文件导入同一包中的其他文件,并将包/文件导入其他包的文件.


现在的情况

我有一堆python文件.当从命令行调用时,它们中的大多数都是有用的,即它们都使用argparse并if __name__ == "__main__"执行有用的操作.

目前我有这个目录结构,一切正常:

.
??? config.txt
??? docs/
?   ??? ...
??? my_tool.py
??? a.py
??? b.py
??? c.py
??? d.py
??? e.py
??? README.md
??? tests
?   ??? __init__.py
?   ??? a.py
?   ??? …
Run Code Online (Sandbox Code Playgroud)

python import packages pycharm python-2.7

28
推荐指数
1
解决办法
5856
查看次数

如何定义Python模块中的__name__变量?

我知道标准的例子:如果你直接执行一个模块,那么它的__name__全局变量定义为"__main__".但是,在文档中没有任何地方可以找到__name__在一般情况下如何定义的精确描述.该模块的文件说...

在模块中,模块的名称(作为字符串)可用作全局变量的值__name__.

......但是"模块名称"是什么意思?它只是模块的名称(已.py删除的文件名),还是包含完全限定的包名称?

如何__name__确定Python模块中变量的值?对于奖励积分,请准确指出在Python源代码中执行此操作的位置.

python python-module python-internals

25
推荐指数
1
解决办法
2万
查看次数

Python主要调用类

我没有做太多的python - 来自C/Java背景 - 所以请原谅我提出这么简单的问题.我在Eclipse中使用Pydev来编写这个简单的程序,我想要它做的就是执行我的main函数:

class Example():

if __name__ == '__main__':
    Example().main()        <----- What goes here?


    def main(self):     
        print "Hello World!
Run Code Online (Sandbox Code Playgroud)

这就是我现在拥有的.我也试过了

self.main() 
Run Code Online (Sandbox Code Playgroud)

和

main()
Run Code Online (Sandbox Code Playgroud)

和

main(self)
Run Code Online (Sandbox Code Playgroud)

没有一个工作.我错过了什么?

python pydev

24
推荐指数
2
解决办法
8万
查看次数

Python中的执行顺序和编码风格

我是Python的新手,所以如果问题太基础,请不要激怒我:)

我已经读过Python从上到下执行.

如果是这种情况,为什么程序会这样:

def func2(): 
    pass

def func1():
    func2()

def func():
    func1()

if __name__ == '__main__':
    func()
Run Code Online (Sandbox Code Playgroud)

所以从我所看到的,主要功能最后,其他功能堆叠在它上面.

这样说我错了吗?如果不是,为什么主函数或函数定义不是从上到下编写的?

编辑:我在问为什么我不能这样做:

if __name__ == '__main__':
    func()

def func1():
    func2()
Run Code Online (Sandbox Code Playgroud)

这不是自然秩序吗?你继续在底部添加东西,因为它是从上到下执行的.

python

23
推荐指数
3
解决办法
2万
查看次数