我在同一目录中有Python模块a.py和b.py. 如果a.py可能已从其他目录导入或直接执行,我如何可靠地从a.py导入b.py?此模块将分发,因此我无法对单个路径进行硬编码.
我一直在玩__file__,sys.path和os.chdir,但感觉很乱.而且__file__并不总是可用的.
谢谢
如果我在一个模块中使用一个类,我怎么能在它的实例中使它成为"顶级"?
结构体:
/package
__init__.py
/subPackage
__init__.py
module.py
subModule.py
/theScript.py
Run Code Online (Sandbox Code Playgroud)
python theScript.py
TheScript的来源:
import package.subPackage.module
package.subPackage.module.method()
Run Code Online (Sandbox Code Playgroud)
/package/subPackage/module.py的来源:
class module:
def method(self): pass
moduleInstance = module()
Run Code Online (Sandbox Code Playgroud)
我猜我问什么是我会怎么做它,这样我就不必做package.subPackage.module.moduleInstance.method()和能package.subPackage.module.method()
我知道我可以删除类和实例,但我更喜欢这个类,因为如果有人想要不需要直接修改我们的源代码就更容易进行子类化,但如果我最终必须使用方法而不是类/方法在模块中.
我目前正在用 Python 进行一个游戏项目,但我发现自己在 Python 背后的“概念”方面苦苦挣扎,因为我已经习惯了 C 或 Java 等语言。
我曾经试图“鸿沟”我在几个文件中的项目(即称为模块,如果我没有记错,虽然他们都在为我将与C源文件做同样的文件夹中)与不同的主题:objects.py,map.py,rendering.py等。它们包含与这些概念相关的不同类和函数。我有一个main.py包含我所有的“主要”函数(例如new_game等等)以及第一个“调用”,它将调用main_menu.
我还有一个constants.py文件,用于存储常量值。现在问题是,我的游戏中有几个“全局”变量和对象:玩家对象、地图等等。我希望在所有模块中保持这些变量的全局性,并且能够从任何地方访问和修改它们。
我首先创建一个global_variables.py在我列出的所有我的变量文件(如map = None,player = None等),期待通过其他模块进行修改。
问题是,每次我global_variables再次调用 import时,它都会遍历整个代码并将它们全部重新初始化为None,这显然是我不想要的。
我在另一个 stackoverflow 线程上读到一个提示:init()在我的文件中创建一个函数,我将在其中初始化所有变量并将它们声明为全局变量。这样,我调用global_variables.init()一次,然后我可以简单global_variables.player地访问播放器并对其进行修改。
它运行良好,但我觉得它很杂乱。我有很多global foo, 其次是foo = None感觉像是不必要的代码行。此外,当我输入 global_variables 时,IDE 无法“访问”变量。,它不建议将变量作为自动完成,这很痛苦。
那么还有另一种方法吗?这个想法是从任何函数中“声明”变量,以便 IDE 理解它们在那里,但只“初始化”它们一次,这样我就可以避免每次导入global_variables模块时重置它们。
如何使用win32com模块找到打开的 Excel 工作簿?我只想读取尚未保存的 Excel 工作簿中的单元格。或者有什么文件可以参考吗?
我不确定模块链接在 python 中的确切含义。例如,在 spacy 问题中,我看到https://github.com/explosion/spaCy/issues/1523。
python -m spacy link jieba zh
这是如何运作的?
最重要的是,我如何确保以requirements.txt编程方式在某处或某处发生这种情况?
我进行了一些数学计算,结果我有一些整数分钟。现在我需要帮助将此整数转换为此格式hh:mm:ss尝试使用日期时间执行此操作但没有成功。
NUM = 594.15
Run Code Online (Sandbox Code Playgroud)
预期转换输出:
9:54:09
Run Code Online (Sandbox Code Playgroud) 我想打印一个内置方法的源代码。例如,数学是python的内置模块,我想打印ceil的源代码
我知道如何使用inspect.getsource打印自定义模块的源代码
需要帮助
我正在尝试创建一个程序,我可以在其中调用任何内置方法或函数,并且它将仅显示该函数或模块的源代码。
Python 几乎拥有内置库中的所有内容,我想使用这些库
示例:
input: factorial
output:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
Run Code Online (Sandbox Code Playgroud)
import inspect
inspect.getsource(factorial)
Run Code Online (Sandbox Code Playgroud)
不起作用......导致类型错误
import inspect
import math
print(inspect.getsource(math.ceil)
Run Code Online (Sandbox Code Playgroud)
TypeError: <built-in function ceil> is not a module, class, method, function, traceback, frame, or code object
Run Code Online (Sandbox Code Playgroud)
提前致谢 :)
在__builtin__Python中的杂波模块开发,有很多的函数和类具有非常通用名称命名空间(例如max,sum,id,hash,往往得到变量命名的方式,当一个上下文感知IDE之外的人可以意外覆盖一个等)名字没有注意到.
有没有办法阻止从某个文件隐式访问此模块并需要显式导入?
有点像:
from __builtins__ import hash as builtin_hash
hash = builtin_hash(foo)
Run Code Online (Sandbox Code Playgroud)
我知道这是不好的做法.
一些混淆以及它们可以被命名为:
os.chdir() 可能 os.cd()
os.getcwd() 可能 os.pwd()
os.listdir 可能 os.ls()
对于习惯于UNIX术语的用户来说,这些将更加直接.
我正在尝试使用Django-Money将MoneyField添加到我的 Django 应用程序中。
根据要求,我需要安装py-moneyed v0.4或更高版本。
我检查了py-moneyed但它没有提到如何安装 py-moneyed?
有人可以帮助我在我的环境中安装py-moneyed和Django-Money吗?有没有一个pip或easy_install包可以做到这一点?
我想将模块编写为函数而不是类。
有没有办法使这项工作按预期进行?
greet.py
def main(x):
print(f'Hello {x}!')
Run Code Online (Sandbox Code Playgroud)
现在我如何编写模块以便在greet执行时main运行。
main.py
import greet
greet('Foo') # output: Hello Foo!
Run Code Online (Sandbox Code Playgroud) python-module ×12
python ×11
python-3.x ×4
django ×2
module ×2
anaconda ×1
built-in ×1
django-views ×1
excel ×1
ipython ×1
math ×1
openpyxl ×1
pip ×1
win32com ×1