我有一个bean类名称为"Bean1".在我的main方法中,我有一个包含变量名称的字符串.String str ="Bean1"; 现在我如何使用String变量来获取类并访问Bean属性.我是Java新手.请帮忙.
我经常需要用别的东西临时切换一个变量的值,做一些依赖于这个变量的计算,然后将变量恢复到它的原始值。例如:
var = 0
# Assign temporary value and do computation
var_ori = var
var = 1
do_something_with_var() # Function that reads the module level var variable
# Reassign original value
var = var_ori
Run Code Online (Sandbox Code Playgroud)
这似乎是使用上下文管理器(with
语句)的明显机会。Python 标准库是否包含任何这样的上下文管理器?
我知道这种事情通常由其他更好的方法处理,而不是临时更改变量。然而,我并不是要求明显的解决方法。
在我的实际工作案例中,我无法更改该do_something_with_var
功能。实际上,这甚至不是一个函数,而是作为元编程的一部分在全局命名空间上下文中求值的一串代码。我给出的例子是我能想到的最简单的例子,它使我的问题与临时变量有关。我没有要求获得我的示例代码的解决方法(正确版本),而是要求获得我书面问题的答案。
我正在尝试为我编写的程序创建一个GUI,帮助您将站点的密码保存到文件中.截至目前,该程序将允许您编辑并在终端/ cmd中提供这些.我希望它有一个GUI,在开始时会有两个按钮,说明你想要"查看你的密码"或"编辑密码"."查看您的密码"会将您带到GUI的另一部分,让您看到自己的密码,"编辑密码"会将您带到GUI的一部分,让您将密码和详细信息添加到文件中.有人可以为我提供良好的在线教程,让我能够做到这一点吗?谢谢.
问题:我想写为用户在输入一个目录的路径add.argument
的ArgumentParser()
。
到目前为止:我已经写了这个
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('path', option = os.chdir(input("paste here path to biog.txt file:")), help= 'paste path to biog.txt file')
Run Code Online (Sandbox Code Playgroud)
任何想法,什么是该问题的理想解决方案?
我lru_cache
在返回可变对象的函数上使用 Python ,如下所示:
import functools
@functools.lru_cache()
def f():
x = [0, 1, 2] # Stand-in for some long computation
return x
Run Code Online (Sandbox Code Playgroud)
如果我调用这个函数,改变结果并再次调用它,我不会获得一个“新鲜”的、未改变的对象:
a = f()
a.append(3)
b = f()
print(a) # [0, 1, 2, 3]
print(b) # [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我明白为什么会发生这种情况,但这不是我想要的。解决方法是让调用者负责使用list.copy
:
a = f().copy()
a.append(3)
b = f().copy()
print(a) # [0, 1, 2, 3]
print(b) # [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
但是我想在里面解决这个问题f
。一个漂亮的解决方案是这样的
@functools.lru_cache(copy=True)
def f():
...
Run Code Online (Sandbox Code Playgroud)
尽管copy
实际上没有任何参数被functools.lru_cache
.
关于如何最好地实现这种行为的任何建议?
根据holdenweb 的回答,这是我的最终实现。 …
每当我为多维内存视图的一个切片分配单个值时,Cython似乎都会使用错误的步幅,除非该切片沿第一个维度。我在下面给出一个完整的例子:
# bug.py
import numpy as np
def bug():
#cdef int[:, ::1] a
a = 2*np.ones((2, 2), dtype=np.intc)
a[:, :1] = 1
print(np.asarray(a))
Run Code Online (Sandbox Code Playgroud)
如果我们在Python中运行此代码(例如python3 -c 'import bug; bug.bug()'
),我们将得到
[[1 2]
[1 2]]
Run Code Online (Sandbox Code Playgroud)
按预期打印。现在,通过将文件重命名为bug.pyx
,用Cython对其进行编译,并将以下文件保存在Makefile
同一目录中,
# Makefile
python = python3
python_config = $(python)-config
CC = gcc
CFLAGS = $(shell $(python_config) --cflags) -fPIC
CFLAGS += $(shell $(python_config) --includes)
python_libdir = $(shell $(python) -c "import sysconfig; \
print(sysconfig.get_config_var('LIBDIR'));")
LDLIBS = -L$(python_libdir) -Wl,-rpath=$(python_libdir)
LDLIBS += $(shell $(python_config) --libs)
LDFLAGS …
Run Code Online (Sandbox Code Playgroud) 假设我有一个很大的 NumPy 数组dtype
int32
import numpy as np
N = 1000 # (large) number of elements
a = np.random.randint(0, 100, N, dtype=np.int32)
Run Code Online (Sandbox Code Playgroud)
但现在我希望数据是uint32
. 我可以
import numpy as np
N = 1000 # (large) number of elements
a = np.random.randint(0, 100, N, dtype=np.int32)
Run Code Online (Sandbox Code Playgroud)
甚至
b = a.astype(np.uint32)
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下b
都是 的副本a
,而我想简单地将 中的数据重新解释a
为uint32
,以免复制内存。同样,使用np.asarray()
也没有帮助。
起作用的是
b = a.astype(np.uint32, copy=False)
Run Code Online (Sandbox Code Playgroud)
它只是改变了dtype
而不改变数据。这是一个引人注目的例子:
import numpy as np
a = np.array([-1, 0, 1, …
Run Code Online (Sandbox Code Playgroud) 在使用默认的mathtext而不是LaTeX数学渲染引擎时,我在matplotlib 2.0.2中渲染数学时发现了错误.似乎一些字形(在我的情况下是减号和乘号)不能被mathtext识别.真正奇怪的是,只有当这些特定字形出现在刻度标签中时才会出现错误.当我故意在图标题中输入一些蹩脚的表达时,它可以正常工作.
考虑以下示例和结果图像:
import matplotlib
import matplotlib.pyplot as plt
# Customize matplotlib
matplotlib.rcParams.update({# Use mathtext, not LaTeX
'text.usetex': False,
# Use the Computer modern font
'font.family': 'serif',
'font.serif': 'cmr10',
'mathtext.fontset': 'cm',
})
# Plot
plt.semilogy([-0.03, 0.05], [0.3, 0.05])
plt.title(r'$-6\times 10^{-2}$')
plt.savefig('test.png')
Run Code Online (Sandbox Code Playgroud)
如图所示,刻度标签中的乘法和一些减号已被其他字符替换.如果我使用LaTeX(通过设置'text.usetex'
为True
),一切都很好.为什么会发生这种情况,更重要的是,如何在不将mathtext更改为LaTeX的情况下修复它?
这是运行示例代码时打印的警告:
mathtext.py:866: MathTextWarning: Font 'default' does not have a glyph for '\times' [U+d7]
MathTextWarning)
mathtext.py:867: MathTextWarning: Substituting with a dummy symbol.
warn("Substituting with a dummy symbol.", MathTextWarning)
Run Code Online (Sandbox Code Playgroud)
请注意,指数中出现的减号会正确呈现.如果我遗漏'mathtext.fontset': …
在bash中,我可以pid
通过$!
变量获取最后一个子进程的进程ID()。然后,我可以在此子进程完成之前将其杀死:
(sleep 5) & pid=$!
kill -9 $pid
Run Code Online (Sandbox Code Playgroud)
这工作如广告。如果现在我在之后用更多命令扩展子流程,即使其他命令从未执行过sleep
,该sleep
命令也会在子流程被杀死后继续执行。
例如,考虑以下内容,它启动一个子流程并使用监视其暗杀ps
:
# Start subprocess and get its pid
(sleep 5; echo done) & pid=$!
# grep for subprocess
echo "grep before kill:"
ps aux | grep "$pid\|sleep 5"
# Kill the subprocess
echo
echo "Killing process $pid"
kill -9 $pid
# grep for subprocess
echo
echo "grep after kill:"
ps aux | grep "$pid\|sleep 5"
# Wait for sleep to finish …
Run Code Online (Sandbox Code Playgroud) 我对 OPC-UA 世界完全陌生。
我需要建立一个关于如何让我们的 ERP 与 PLC 通信的概念证明。我正在评估充当 OPC-UA 服务器的软件(它正在运行)。我发现了 Milo 并让代码在 Eclipse 中工作。查看示例,我将一个玩具程序连接到 OPC-UA 服务器并执行...
基本的管道工作,但我不知道从哪里开始使用 OPC-UA 和 Milo。我一直无法找到介绍材料来帮助我理解这一切。
是否有关于 OPC-UA 架构以及 Milo 如何实现的文档?有没有比查看示例来弄清楚应该如何做更好的方法呢?