相关疑难解决方法(0)

从子模块导入根名称空间的方法的Python模块

我想创建一个像NumPy一样工作的Python模块。这些方法不仅是模块源中树的叶子中的子模块。有一个包含许多我可以直接调用的方法的根模块,还有一些子模块。问题是根方法必须在某处定义。我当时想拥有一个目录结构:

module/
  __init__.py
  core.py
  stuff1.py
  submodule/
    __init__.py
    stuff2.py
    stuff3.py
Run Code Online (Sandbox Code Playgroud)

现在,我希望将“ core”内部的所有内容导入“ module”命名空间,就好像它是一个module.py文件,而core.py的内容都在此module.py内部。问题在于模块是目录而不是文件,那么如何定义应该位于模块根目录中的这些方法?

我尝试将“ from core import *”放在init .py中,但这没有用。(编辑:实际上是。)

我是否应该在“ module.py”文件以及模块目录中包含核心方法?我不知道这是否可行,但是看起来很尴尬。

python module

5
推荐指数
2
解决办法
2073
查看次数

如何在单独的文件中获取函数的函数名称?

我正在创建一个聊天main.py机器人,commands.py它有 2 个主要文件,它运行机器人并包含机器人识别的命令。我试图从中获取函数名称commands.py,以便在main.py. 例如:

命令.py

def add():
    pass

def delete():
    pass

def change():
    pass
Run Code Online (Sandbox Code Playgroud)

基本上,我希望能够存储在变量commands = ['add', 'delete', 'change']或类似的东西中。我对装饰器没有任何经验,但这可能是使用它的好时机吗?能够使用装饰器注册命令?我愿意接受任何建议,谢谢!

python decorator python-3.x

5
推荐指数
1
解决办法
2102
查看次数

这个警告是什么意思?“未在 __all__ 中声明”

Pycharm 向我发出警告,提示我不知道如何修复。

在此输入图像描述

那么我在编码时的错误做法是什么?我怎样才能解决这个问题?

python

4
推荐指数
1
解决办法
6125
查看次数

学习java,为什么我的私有私有?

我正在学习java,来自python有很多我不完全理解的东西存在于java中,其中第一个必须是公共和私有声明.我的意思是从一种没有真正可见的公共私人声明的语言到一切必须是私人的语言,我理解他们所做的基本原则.我问'为什么'他们这样做.为什么有人会关心谁接触私处?如果你是一个优秀的程序员,你应该知道你应该'和'不应该'在代码中戳的那些位,这应该不是一个问题.为什么要保密呢?为什么隐藏,模糊,让世界变得私密?为什么要开始照顾.

java programming-languages private public

3
推荐指数
3
解决办法
858
查看次数

使用turtle的PyCharm错误语法错误

下面的代码完美无缺,然而,PyCharm抱怨语法错误 forward(100)

#!/usr/bin/python
from turtle import *

forward(100)

done()
Run Code Online (Sandbox Code Playgroud)

既然turtle是stanrd库我不认为我需要做额外的配置,对吗?

在此输入图像描述

python turtle-graphics code-inspection pycharm

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

我为什么要在__init__的python包中使用__all__?

我已经阅读过有人可以在Python中解释__all__吗?我明白它只影响from ... import *陈述,但我无法弄清楚一个真实的用例.__all__当我可以简单地避免在__init__命名空间中导入这些名称时,为什么要在(DRY!)中重复导出的名称?

例:

mypackage/__init__.py

from a import A
Run Code Online (Sandbox Code Playgroud)

mypackage/a.py

A = "A"
A1 = "A1"
Run Code Online (Sandbox Code Playgroud)

mypackage/b.py

B = "B"    
Run Code Online (Sandbox Code Playgroud)

然后在python中:

>>> from mypackage import *
>>> A
'A'
>>> 
>>> A1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'A1' is not defined
>>> b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
Run Code Online (Sandbox Code Playgroud)

正如你所看到的A是在命名空间,但 …

python package

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

为什么python import模块导入的时候会导入*

假设我有一个要导入一些包的文件:

# myfile.py
import os
import re
import pathlib

def func(x, y):
    print(x, y)
Run Code Online (Sandbox Code Playgroud)

如果我进入另一个文件并输入

from myfile import *
Run Code Online (Sandbox Code Playgroud)

它不仅导入,还func导入os、、、、repathlib

但我希望在导入时导入这些模块import *

为什么它会导入我正在导入的其他包以及如何避免这种情况?

python import python-import

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

在 Python 的构造函数中使用 self._variable 和只使用 self.variable 有什么区别

例如,如果我创建一个类 Point。

类点:

def__init__(self, x, y):
    self._x = x
    self._y = y 
Run Code Online (Sandbox Code Playgroud)

类点:

def__init__(self, x, y):
    self.x = x
    self.y = y 
Run Code Online (Sandbox Code Playgroud)

self._x 和 self.x 的使用有什么区别。

python class instance-variables

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

有没有办法绕过Python中的命名空间/模块名称?

如果您有类似的模块module,是否可以绕过它并使用内部可用的功能而不使用模块?

我导入了模块,但编译器仍抱怨不必查找function.我还是要用module.function().

它有更多的功能,所以我不想一个接一个地重新定义它们,但module如果可能的话就避免输入.

python styles namespaces module

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