小编fiz*_*x00的帖子

PyCharm中的弱警告:出乎意料的争论

此检查报告声明的参数和实际参数之间的差异,以及不正确的参数(例如,重复的命名参数)和不正确的参数顺序.还分析了装饰器.

那就是PyCharm告诉我的.这是一个弱警告,所以我的代码运行正常.

import collections
var_dict = {}
var_dict = collections.OrderedDict(sorted(var_dict.items()))
Run Code Online (Sandbox Code Playgroud)

^这是有问题的代码行.我相信警告与OrderedDict电话有关.

我检查了Python 3.5 的OrderedDict文档,但我仍然感到困惑.

为什么我收到这个警告?我正在使用PyCharm Community Edition 5.0.1

collections ordereddictionary pycharm python-3.x

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

为什么Python中称为运算符重载而不是重写?

如果我想改变继承方法的行为,我会这样做:

class a:
    def changeMe(self):
        print('called a')

class b(a):
    def changeMe(self):
        print('called b')
Run Code Online (Sandbox Code Playgroud)

我相信这是Python 中重写的一个例子。

但是,如果我想重载一个运算符,我会做一些非常类似的事情:

class c:
    aNumber = 0
    def __add__(self, operand):
        print("words")
        return self.aNumber + operand.aNumber

a = c()
b = c()
a.aNumber += 1
b.aNumber += 2
print(a + b) # prints "words\n3"
Run Code Online (Sandbox Code Playgroud)

我认为也许运算符方法在 python 中确实被重写了,因为我们使用可选参数进行重载,并且我们只是将其称为不符合约定的运算符重载。

但它也不可能是覆盖,'__add__' in object.__dict__.keys()因为False; 方法需要是父类的成员才能被重写(并且所有类object在创建时都继承自)。

我的理解差距在哪里?

python oop overriding operator-overloading python-3.x

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

最有效的正则表达式,用于检查字符串是否包含至少3个字母数字字符

我有这个正则表达式:

(?:.*[a-zA-Z0-9].*){3}
Run Code Online (Sandbox Code Playgroud)

我用它来查看字符串中是否至少包含3个字母数字字符.它似乎工作.

它应匹配的字符串示例:

'a3c'
'_0_c_8_'
' 9 9d '
Run Code Online (Sandbox Code Playgroud)

但是,我需要它更快地工作.有没有更好的方法来使用正则表达式来匹配相同的模式?


编辑:我最终使用这个正则表达式为我的目的:

(?:[^a-zA-Z0-9]*[a-zA-Z0-9]){3}
Run Code Online (Sandbox Code Playgroud)

(不需要修饰符)

javascript regex

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

PyCharm Python 3.4问题:未解决的参考

我的PyCharm有问题.在我将Python从3.3.5更新到3.4之后,我在PyCharm中遇到了以下形式的恼人错误:

from multiprocessing import Queue, Process
Run Code Online (Sandbox Code Playgroud)

PyCharm强调QueueProcess在红色和示出了一个未解决的引用.代码实际上在命令行和PyCharm内都运行良好.对于这些类,代码完成似乎也被打破了.

我怀疑有问题PYTHONPATH,但我不确定如何解决它.

系统详细信息:通过Homebrew,Pycharm 3.1.1安装的Mac OS X 10.9.2,Python 3.4

macos pycharm python-3.x

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

在pylearn2中使用RBM预训练ANN

我正在尝试pylearn2使用RBM预训练训练多层人工神经网络.我稍微修改了一个名为run_deep_trainer的脚本,该脚本包含在pylearn2\pylearn2\scripts\tutorials\deep_trainer中.我想要一个4层网,其中前3个是500 GaussianBinaryRBM,最后一个是mlp.Softmax层.

这是我创建的脚本:

from pylearn2.models.rbm import GaussianBinaryRBM
from pylearn2.models.softmax_regression import SoftmaxRegression
from pylearn2.models.mlp import Softmax
from pylearn2.training_algorithms.sgd import SGD
from pylearn2.costs.autoencoder import MeanSquaredReconstructionError
from pylearn2.termination_criteria import EpochCounter
from pylearn2.datasets.dense_design_matrix import DenseDesignMatrix
from pylearn2.energy_functions.rbm_energy import GRBM_Type_1
from pylearn2.blocks import StackedBlocks
from pylearn2.datasets.transformer_dataset import TransformerDataset
from pylearn2.costs.ebm_estimation import SMD
from pylearn2.training_algorithms.sgd import MonitorBasedLRAdjuster
from pylearn2.train import Train
from optparse import OptionParser

import numpy

def get_dataset_timitConsSmall():
    print('loading timitConsSmall dataset...')

    template = \
        """!obj:pylearn2.datasets.timitConsSmall.timit.TIMIT { …
Run Code Online (Sandbox Code Playgroud)

python machine-learning theano deep-learning pylearn

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

python中的regex语法,左引号前的r

这是我正在编写的Python东西中的一行正则表达式:

m = re.match(r"{(.+)}", self.label)
Run Code Online (Sandbox Code Playgroud)

据我所知,它工作正常。

无论如何,我的问题是关于第一个双引号之前的r字符。我从来没有真正质疑过它。但是为什么在那里呢?目的是什么?

python regex syntax

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