我正在尝试为一个只读对象编写一个类,该类不会真正与copy模块一起复制,并且当它被腌制以在进程之间传输时,每个进程都将维护不超过一个副本,无论如何很多时候它会作为“新”对象传递。已经有这样的东西了吗?
我有一个开源的Python项目(称为GarlicSim),我为Python版本2.4,2.5,2.6和3.1维护了4个不同的版本.是的,也许这很不寻常,但我喜欢使用尽可能多的功能.我将它们保存在4个不同的存储库中.
现在我想将我的项目上传到cheeseshop.这样做的方法是什么?我希望用户能自动获得适合他的Python版本的GarlicSim版本.我怎么做?
我被赋予一个模块作为对象,我需要从中导入一个子模块.像这样:
import logging
x = logging
Run Code Online (Sandbox Code Playgroud)
现在,我想导入logging.handlers只使用x,而不是名称为"记录".(这是因为我正在进行一些动态导入,并且不知道模块的名称.)
我该怎么做呢?如果我这样做import x.handlers失败了.
我正在开发一个名为的软件包garlicsim。(网站。)该软件包用于Python 2.X,但我还在另一个名为garlicsim_py3。(1)的派生类上提供了Python 3支持。
因此,这两个软件包在PyPI上并存,并且Python 3用户安装garlicsim_py3,而Python 2用户安装garlicsim。
问题是:当第三方模块要使用garlicsim时,它们应具有一个要引用的软件包名称,而不是两个。当然,他们可以这样做:
try:
import garlicsim
except ImportError:
import garlicsim_py3 as garlicsim
Run Code Online (Sandbox Code Playgroud)
但是我不希望这些模块的开发人员这样做。
有没有办法garlicsim_py3将自己安装在别名下garlicsim?我想要的是让Python 3用户能够一直import garlicsim引用该模块garlicsim,但事实确实如此garlicsim_py3。
我知道Distribute项目做的是这样的:他们制造了它,所以您可以导入setuptools它,并将其重定向到他们的代码中。我不知道他们是怎么做到的。
有任何想法吗?
(1)我已经决定在分支上而不是在相同的代码库中支持Python 3;对我而言,重要的是代码库必须整洁,并且我真的不想引入兼容性黑客。
(请记住我在Python 3中工作,因此解决方案需要在Python 3中工作.)
我想用这个copyreg模块教Python如何pickle函数.当我尝试这样做时,该_Pickler对象仍然会尝试使用该save_global函数来pickle 函数.(这对于未绑定的方法不起作用,这就是这样做的动机.)
It seems like _Pickler first tries to look in its own dispatch for the type of the object that you want to pickle before looking in copyreg.dispatch_table. I'm not sure if this is intentional.
Is there any way for me to tell Python to pickle functions with the reducer that I provide?
我想用 BeautifulSoup 捕获一些标签:一些<p>标签,<title>标签,一些<meta>标签。但无论他们的情况如何,我都想抓住他们;我知道有些网站会这样做元:<META>我希望能够抓住这一点。
我注意到 BeautifulSoup 默认区分大小写。如何以不区分大小写的方式捕获这些标签?
我正在通过YouTube API访问用户喜爱的视频.如何获得将每个视频标记为收藏的日期/时间?
更新:
有人指出,YouTube API文档说用户最喜欢的Feed上的"已发布"日期会有用户将视频标记为收藏的时间.但这似乎是错误的.
例如,看看这个视频条目:
http://gdata.youtube.com/feeds/api/videos/g2981r_MtHQ
它有一个"已发布"的日期2008-03-19T21:09:09.000Z.
现在让我们在一些用户喜爱的Feed中看到相同的视频:
http://gdata.youtube.com/feeds/api/users/KeepWatchingTheSkies/favorites
它有一个"已发布"的日期2008-03-19T21:09:09.000Z.相同.
以下是获取收藏Feed的不同方法:
http://gdata.youtube.com/feeds/base/users/KeepWatchingTheSkies/favorites
我们还有一个"已发布"的日期2008-03-19T21:09:09.000Z.
假设用户没有足够快地在相同的毫秒内发布视频,那么在YouTube文档中写的内容可能是错误的,并且这不是用户将视频标记为收藏的时间.
所以我的问题是:如何让用户将视频标记为收藏?
我偶尔会使用一种设计模式,我不知道它叫什么.也许它有一个名字,有人知道吗?
当我想遍历树状结构并在其所有节点上执行某些操作时,我会使用它.它是这样的:
nodes_to_handle = [root_node]
while nodes_to_handle:
node = nodes_to_handle.pop()
# handle node
nodes_to_handle += node.get_neighbors()
Run Code Online (Sandbox Code Playgroud)
注意,结构不必是树; 例如,此模式可用于在数组中执行泛洪填充.
那么,这种设计模式是否有可接受的名称?
是否可以在Python中创建不同类型的多维数组?我通常解决它的方式是[([None] * n) for i in xrange(m)],但我不想使用list.我想要的东西实际上是内存中连续的指针数组,而不是列表.(每个列表本身都是连续的,但是当您创建列表列表时,不同的列表可能会分布在RAM中的不同位置.)
此外,写入[([None] * n) for i in xrange(m)]是一种非常复杂的初始化空数组的方式,与之类似empty_array(m, n).还有更好的选择吗?