我在python中有一个函数,可以在标准输出中输出内容
def foo():
print("some text")
Run Code Online (Sandbox Code Playgroud)
我想将此函数中正在打印的文本"重定向"为变量,即"包装"此函数或其他任何内容,以便将文本存储在变量中:
text = wrapper(foo)
Run Code Online (Sandbox Code Playgroud)
有没有一种强大的方法来临时更改sys.stdout或打开变量作为一个FileObject或其他什么?
我有以下目录结构
main_code.py
libs/
__init__.py
mylib.py
time.py
Run Code Online (Sandbox Code Playgroud)
与main_code.py刚刚进口mylib:
from libs import mylib
Run Code Online (Sandbox Code Playgroud)
并mylib.py只是导入time:
import time
print time
Run Code Online (Sandbox Code Playgroud)
现在它证明了mylib.py导入libs/time.py而不是内置的标准库time.有没有办法获得"正常"行为,即mylib.py导入内置标准库time,而不改变time.py?这是否是"正常"行为?我必须重命名time.py吗?在这个问题上,是否有比PEP8更多的风格指南建议?
我有一段代码,我想在其中使用装饰器classmethod,如下所示:
import functools
def mydeco(function):
@classmethod
def wrapper(cls):
return function(cls)
return functools.update_wrapper(wrapper, function)
# return wrapper
class BaseClass(object):
@classmethod
@mydeco
def foo(cls):
return "42"
print BaseClass.foo()
Run Code Online (Sandbox Code Playgroud)
当我注释掉@mydeco代码行时,即42打印文本。当包含这个装饰器时,我有几个问题:
使用更简单的行时,return wrapper我收到错误
TypeError: 'classmethod' object is not callable
Run Code Online (Sandbox Code Playgroud)如何正确地做到这一点,即,在给定的示例中,原始函数被返回而不被更改。
当使用更复杂的调用return functools.update_wrapper(wrapper, function)来保留一些原始函数时,我得到了错误
AttributeError: 'classmethod' object has no attribute '__module__'
Run Code Online (Sandbox Code Playgroud)我不确定这个错误是否与第一个问题有关,但对我来说它看起来是一个不同的问题。欢迎任何解决这些问题的具体建议。
上面的例子并没有真正“做”某事,它只是展示我遇到的问题的最小可能的例子。
虽然标题可以解释为三个问题,但实际问题很容易描述.在Linux系统上我安装了python 2.7.3,并希望收到有关python 3不兼容性的警告.因此,我的代码片段(tester.py)看起来像:
#!/usr/bin/python -3
class MyClass(object):
def __eq__(self, other):
return False
Run Code Online (Sandbox Code Playgroud)
当我执行此代码片段(被认为只是为了显示问题,而不是我在项目中使用的实际代码片段)时
./tester.py
Run Code Online (Sandbox Code Playgroud)
我收到以下弃用警告:
./tester.py:3: DeprecationWarning: Overriding __eq__ blocks inheritance of __hash__ in 3.x
class MyClass(object):
Run Code Online (Sandbox Code Playgroud)
我的问题:如何更改此代码段以消除警告,即使其与版本3兼容?我想以正确的方式实现相等运算符,而不仅仅是抑制警告或类似的东西.
在 PHP5 类中,我想声明一个常量,如下所示:
class MyClass
{
const sEOLChars = chr(13) . chr(10);
Run Code Online (Sandbox Code Playgroud)
会产生错误 ( Parse error: syntax error, unexpected '(', expecting ',' or ';')。怎样做才正确呢?
我想创建一种匹配字符串的方法
abc(xyz)
abc
abc(xyz)[123]
Run Code Online (Sandbox Code Playgroud)
其中每个支架是一个可选单元.我最想要的就是这样
preg_match_all('complicated regex', $mystring, $matches);
Run Code Online (Sandbox Code Playgroud)
与$matches返回以下内容:
$mystring= abc(xyz)[123]R给$matches=array(0 => "abc", 1=> "xyz", 2=> "123", 3=> "R")$mystring= abc(xyz)R给$matches=array(0 => "abc", 1=> "xyz", 2=> "", 3=> "R")$mystring= abc[123]R给$matches=array(0 => "abc", 1=> "", 2=> "123", 3=> "R")$mystring= abc(xyz)[123]给$matches=array(0 => "abc", 1=> "xyz", 2=> "123", 3=> "")$mystring= abc给$matches=array(0 => "abc", 1=> "", 2=> "", 3=> "")我希望你明白这一点.我尝试如下:
preg_match_all("/([a-z]*)(\([a-zA-Z]\))?(\[\w\])?/", "foo(dd)[sdfgh]", …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种易于使用的工具,它可以将类的“内部工作”可视化,例如用 PHP 编写。我想看到的是不同的类方法,以及它们之间的关系(方法 A 调用方法 B 等)。有没有这样的工具来创建这样的图表?在进一步的步骤中,也许有一个工具也可以将类的“内部工作”(以逆向工程的方式)可视化,即工作流的真实情况,即所有if-else决策等,在什么情况下调用什么方法?
如果有人可以向我推荐这样的工具(最好是 PHP 和 Python),我将不胜感激。
我正在使用setuptools版本0.9.6并想要setup按照此处或此处显示的说明添加命令挂钩.我创建了一个MyCommand派生自setuptools.Command同一setup.py文件的类,我试图添加这个钩子如下:
setup(
# ...
entry_points = {
"distutils.commands": [
"my_command = MyCommand"]}
)
Run Code Online (Sandbox Code Playgroud)
但是,该命令my_command无法识别,即python setup.py my_command出错
error: invalid command 'my_command'
Run Code Online (Sandbox Code Playgroud)
也许我需要以不同的方式参考我的命令?或者使用的0.9.6版本有变化setuptools吗?怎么做对了?
在 python 中,我正在寻找 python 代码,我可以使用它来创建与任何正则表达式匹配的随机数据。例如,如果正则表达式是
\d{1,100}
Run Code Online (Sandbox Code Playgroud)
我想要一个随机数列表,随机长度在 1 到 100 之间(均匀分布)
有一些可用的“正则表达式反相器”(请参阅此处)可以计算所有可能的匹配,这不是我想要的,而且非常不切实际。例如,上面的示例有超过 10^100 个可能的匹配项,这些匹配项永远无法存储在列表中。我只需要一个函数来随机返回匹配项。
也许已经有一个可用的软件包可以用来完成此任务?我需要一个函数来为任何正则表达式创建匹配字符串,而不仅仅是给定的一个或其他正则表达式,但可能是 100 个不同的正则表达式。我只是无法自己对它们进行编码,我希望函数提取模式以返回一个匹配的字符串。
我需要将包含十六进制值作为字符的字符串转换为字节数组。尽管这里已经作为第一个答案已经回答了,但出现以下错误:
warning: ISO C90 does not support the ‘hh’ gnu_scanf length modifier [-Wformat]
Run Code Online (Sandbox Code Playgroud)
由于我不喜欢警告,因此遗漏hh只会产生另一个警告
warning: format ‘%x’ expects argument of type ‘unsigned int *’, but argument 3 has type ‘unsigned char *’ [-Wformat]
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何正确执行此操作?为了完成,我再次在此处发布示例代码:
#include <stdio.h>
int main(int argc, char **argv)
{
const char hexstring[] = "deadbeef10203040b00b1e50", *pos = hexstring;
unsigned char val[12];
size_t count = 0;
/* WARNING: no sanitization or error-checking whatsoever */
for(count = 0; count < sizeof(val)/sizeof(val[0]); count++) {
sscanf(pos, …Run Code Online (Sandbox Code Playgroud) python ×7
python-2.7 ×4
php ×3
regex ×2
arrays ×1
c ×1
class ×1
class-method ×1
constants ×1
decorator ×1
deprecated ×1
function ×1
import ×1
printing ×1
random ×1
setup.py ×1
setuptools ×1
stdout ×1