这两个代码片段之间有什么区别?使用type()
:
import types
if type(a) is types.DictType:
do_something()
if type(b) in types.StringTypes:
do_something_else()
Run Code Online (Sandbox Code Playgroud)
使用isinstance()
:
if isinstance(a, dict):
do_something()
if isinstance(b, str) or isinstance(b, unicode):
do_something_else()
Run Code Online (Sandbox Code Playgroud) 是否有与Python的virtualenv相同或接近的功能,但对于Perl?
我已经在Python中做了一些开发,并且可以在一个单独的环境中安装非系统版本的模块,而不会产生任何混乱,这是一个巨大的优势.现在我必须在Perl中开发一个新项目,我正在寻找像virtualenv这样的东西,但对于Perl来说.你能否建议任何Perl等价物或替换python的virtualenv?
我正在尝试为要部署的Y个不同应用程序设置X个不同的非系统Perl包.更糟糕的是,这些应用程序可能需要相同软件包的不同版本,因此每个应用程序可能需要安装在单独的模块/库环境中.对于X <Y <3,您可能需要手动执行此操作.但是,对于10> Y> X,不应手动执行此操作.
理想情况下,我正在寻找的应该是这样的:
perl virtualenv.pl my_environment
. my_environment/bin/activate
wget http://.../foo-0.1.tar.gz
tar -xzf foo-0.1.tar.gz ; cd foo-0.1
perl Makefile.pl
make install # <-- package foo-0.1 gets installed inside my_environment
perl -MCPAN -e 'install Bar' # <-- now package Bar with all its deps gets installed inside my_environment
Run Code Online (Sandbox Code Playgroud) del
在python中使用显式语句的最佳实践和建议是什么?我知道它用于删除属性或字典/列表元素等等,但有时我看到它在代码中使用局部变量,如下所示:
def action(x):
result = None
something = produce_something(x)
if something:
qux = foo(something)
result = bar(qux, something)
del qux
del something
return result
Run Code Online (Sandbox Code Playgroud)
编写这样的代码有什么严重的原因吗?
编辑:考虑qux
并something
在没有__del__
方法的情况下成为"简单"的东西.
我正在尝试编写一个Makefile,它应该下载一些来源,当且仅当它们丢失时.
就像是:
hello: hello.c
gcc -o hello hello.c
hello.c:
wget -O hello.c http://example.org/hello.c
Run Code Online (Sandbox Code Playgroud)
但是当然这会导致hello.c
每次运行make命令时都会下载.我希望hello.c
只有在缺少时才能通过此Makefile下载.这可能与GNU make有关,如果是这样的话怎么办?
假设我在IPython中以交互方式运行一些代码,它会产生一个未捕获的异常,例如:
In [2]: os.waitpid(1, os.WNOHANG)
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-2-bacc7636b058> in <module>()
----> 1 os.waitpid(1, os.WNOHANG)
OSError: [Errno 10] No child processes
Run Code Online (Sandbox Code Playgroud)
此异常现在由默认的IPython异常处理程序拦截并生成错误消息.有可能以某种方式提取IPython捕获的异常对象吗?
我希望产生与以下相同的效果:
# Typing this into IPython prompt:
try:
os.waitpid(1, os.WNOHANG)
except Exception, exc:
pass
# (now I can interact with "exc" variable)
Run Code Online (Sandbox Code Playgroud)
但我想要它没有这个try/except
样板.
在python中,可以获取或设置逻辑目录(而不是绝对目录).
例如,如果我有:
/real/path/to/dir
Run Code Online (Sandbox Code Playgroud)
我有
/linked/path/to/dir
Run Code Online (Sandbox Code Playgroud)
链接到同一目录.
使用os.getcwd和os.chdir将始终使用绝对路径
>>> import os
>>> os.chdir('/linked/path/to/dir')
>>> print os.getcwd()
/real/path/to/dir
Run Code Online (Sandbox Code Playgroud)
我发现解决这个问题的唯一方法是在另一个进程中启动'pwd'并读取输出.但是,这只有在您第一次调用os.chdir之后才有效.
我听到很多关于couchdb的内容,但在阅读了一些关于它的文档之后,我仍然不明白为什么要使用它以及如何使用它.
你能为我澄清一下这个谜吗?
我想在python中子类化一个数字类型(比方说,int),并给它一个闪亮的复杂构造函数.像这样的东西:
class NamedInteger(int):
def __init__(self, value):
super(NamedInteger, self).__init__(value)
self.name = 'pony'
def __str__(self):
return self.name
x = NamedInteger(5)
print x + 3
print str(x)
Run Code Online (Sandbox Code Playgroud)
这在Python 2.4下工作正常,但Python 2.6给出了弃用警告.在较新的Python版本中,为数字类型子类化并重新定义内置类型的构造函数的最佳方法是什么?
编辑:在评论中发现这没有super()行,所以它可能是这样的:
class NamedInteger(int):
def __init__(self, value):
self.name = 'pony'
def __str__(self):
return self.name
x = NamedInteger(5)
print x + 3
print str(x)
Run Code Online (Sandbox Code Playgroud)
我相信这是有效的,因为int是不可变类型并且只有__new__
方法.但是我很高兴知道一种正确的子类化方法,所以我可以用这样的行为构建一个类:
x = NamedInteger(5, 'kitty')
Run Code Online (Sandbox Code Playgroud)
第二次编辑:
最终版本现在看起来像这样:
class NamedInteger(int):
def __new__(cls, value, name='pony'):
self = super(NamedInteger, cls).__new__(cls, value)
self.name = name
return self
def __str__(self):
return self.name
x = …
Run Code Online (Sandbox Code Playgroud) 大多数BLAS Level 1 API可以使用Fortran 9x +矢量化赋值和内部过程直接编写.
假设您正在使用现代优化编译器(如英特尔Fortran)以及正确的特定于目标的编译器优化选项,那么使用BLAS 1级程序是否有任何性能优势,例如英特尔MKL或其他快速BLAS实现?
如果有,那么当这些好处出现时,典型的矢量大小是多少?
我计划出价的项目的主要目标是使用python创建Microsoft Access数据库.主DB后端将是postgres,但计划是导出Access映像.
这将是一个Web应用程序,它将从用户获取输入并通过黑盒子并将结果输出为访问数据库.Web应用程序将构建在Linux服务器上.
我有一些相关的问题:
谢谢 :)
python ×7
blas ×1
coding-style ×1
couchdb ×1
database ×1
fortran ×1
inheritance ×1
ipython ×1
linux ×1
makefile ×1
ms-access ×1
oop ×1
path ×1
perl ×1
schemaless ×1
symlink ×1
types ×1
virtualenv ×1