小编jam*_*lak的帖子

将可变对象锁定为python中的不可变对象

如何在Python中"锁定"对象?

说我有:

class Foo:
  def __init__(self):
    self.bar = []
    self.qnx = 10
Run Code Online (Sandbox Code Playgroud)

我会尽可能多地修改foo:

foo = Foo()
foo.bar.append('blah')
foo.qnx = 20
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试时,我希望能够"锁定"它

lock(foo)
foo.bar.append('blah')  # raises some exception.
foo.qnx = 20            # raises some exception.
Run Code Online (Sandbox Code Playgroud)

这可能在Python中吗?

python immutability

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

如何避免全局变量

当阅读python文档和各种邮件列表时,我总是阅读看起来有点像教条的内容.全局变量应该像地狱一样避免,它们设计很差......好吧,为什么不呢?但是有一些真实的生活情况,我不知道如何避免这种模式.

假设我有一个GUI,可以从主菜单中加载几个文件.可以在所有GUI(例如,将显示图像并且可以通过不同对话框/插件在其上执行各种动作的图像查看器)上使用与加载的文件相对应的文件对象.

构建以下设计是否有问题:

  • Menu.py - >文件将从这里加载
  • Main.py - >可以在这里使用加载的文件对象
  • Dialog1.py - >或在这里
  • Dialog2.py - >或那里
  • Dialog3.py - >或那里
  • ...
  • Globals.py

其中Globals.py将存储一个字典,其字符是已加载文件的名称和相应文件对象的值.然后,从那里,需要这些数据的代码的各个部分将通过弱引用访问它.

对不起,如果我的问题看起来(或是)很愚蠢,但你看到任何优雅或全球免费的替代品吗?一种方法是将加载的数据字典封装在Main.py的主应用程序类中,将其视为GUI的中央访问部分.然而,这也会带来一些复杂性,因为这个类应该可以从所有需要数据的对话框中轻松访问,即使它们是必要的直接子代.

非常感谢你的帮助

python global-variables

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

通过n扩展列表的最小方法

我想扩展一个列表

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

n

例如,对于n = 2:

[1,1,2,2,3,3,4,4]
Run Code Online (Sandbox Code Playgroud)

我正在寻找实现这一目标的最小方法,而无需任何额外的库.它很容易做一个循环并将每个项目附加n次到一个新列表......但还有另一种方法吗?

python list

10
推荐指数
2
解决办法
621
查看次数

Eclipse:"未配置Python"

以下是发生的事情的屏幕截图:

Python未配置

基本上,我通过命令行执行所有操作,但在eclipse中编辑源代码.
此错误会阻止自动完成,这很烦人.

我已经去了window>preferences>PyDev>Interpreter - Python并设置了正确的值,但它们没有停留,即使我点击应用它们似乎也没有参加当前的会话.

有什么可能导致此错误消息的任何想法?

python eclipse pydev

10
推荐指数
3
解决办法
2万
查看次数

在Python 3中反转排序的字典

我按键对字典进行排序,但我想颠倒顺序.但是,我在网上看到的一些例子并没有让我感到高兴.

这是排序

tempdict = collections.OrderedDict(sorted(tempdict.items()))
Run Code Online (Sandbox Code Playgroud)

现在我正在努力:

reverse = collections.OrderedDict(tempdict.items()[::-1])
reverse = collections.OrderedDict(map(reversed, tempdict.items()))
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.什么是最智能和最优雅的字典排序方式.是的我知道,字典并不是真的用于排序,但这对我们很有用.谢谢.

python dictionary

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

Python布尔方法命名可读性

对于Python中的布尔方法,哪些方法更具可读性?

document.is_editable    
document.editable    
document.has_editable    
document.can_be_editable    
document.can_edit
Run Code Online (Sandbox Code Playgroud)

python naming-conventions

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

规范字典值

我有一个(非常大)字典,它有数字值,例如在表单中data = {'a': 0.2, 'b': 0.3, ...}.规范化这些值的最佳方法是什么(编辑:确保值总和为1)?

我特别感兴趣的是:对于某些数据集大小,它是否有利于使用例如numpy而不是dict理解?

我正在使用python 2.7.

python python-2.7

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

跳过List Python中的元素

我是编程的新手,我正在尝试编写codingbat.com问题.我遇到了这个问题:

给定一个数组计算总和,除非数组中有13.如果数组中有13,则跳过13和紧随其后的数字.例如[1,2,13,5,1]应该产生4(因为跳过了13和5).

这就是我到目前为止所拥有的.我的问题是,当有多个13时,我不知道该怎么做......而且我想学习有效的编码.你们能帮忙吗?(我正在使用python 3.2)谢谢!

def pos(nums):
    for i in nums:
        if i == 13:
            return nums.index(13)
    return False

def sum13(lis):
    if pos(lis)!= False:
        return sum(lis[:pos(lis)])+sum(lis[pos(lis)+1:])
    else:
        return sum(lis)
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
2
解决办法
4万
查看次数

需要使用Python 2.7.11的tensorflow会发生ImportError

我尝试pip install tensorflow了OS X El Capitan并且它成功了.但是,如果我尝试导入tensorflow,则会发生ImportError.你知道的时候请告诉我.

>>> import tensorflow
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py", line 23, in <module>
from tensorflow.python import *
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
from tensorflow.python import pywrap_tensorflow
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in <module>
_pywrap_tensorflow = swig_import_helper()
File "/usr/local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow', fp, pathname, description)
ImportError: dlopen(/usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so, 10): no suitable image found.  Did find:
/usr/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so: unknown file type, first eight bytes: 0x7F …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 tensorflow

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

Python相当于R的mclapply()

R包多核具有函数mclapply(),它将特定函数应用于事物列表并利用多个核心.它易于使用并可大幅提升速度.

是否有Python等价物?谢谢

python multicore r pandas

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