小编Gra*_*row的帖子

常规演员与static_cast与dynamic_cast

我已经编写了近二十年的C和C++代码,但这些语言的一个方面我从未真正理解过.我显然使用常规演员表,即

MyClass *m = (MyClass *)ptr;
Run Code Online (Sandbox Code Playgroud)

到处都是,但似乎有两种其他类型的演员,我不知道其中的区别.以下代码行之间有什么区别?

MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);
Run Code Online (Sandbox Code Playgroud)

c++ pointers casting

1661
推荐指数
8
解决办法
67万
查看次数

如何判断python变量是字符串还是列表?

我有一个例程,它将一个字符串列表作为参数,但我想支持传入一个字符串并将其转换为一个字符串列表.例如:

def func( files ):
    for f in files:
        doSomethingWithFile( f )

func( ['file1','file2','file3'] )

func( 'file1' ) # should be treated like ['file1']
Run Code Online (Sandbox Code Playgroud)

我的函数如何判断字符串或​​列表是否已传入?我知道有一个type功能,但是有更"pythonic"的方式吗?

python duck-typing list

61
推荐指数
7
解决办法
5万
查看次数

究竟什么是"托管"代码?

我已经写了近二十年的C/C++代码了,我也知道Perl,Python,PHP和一些Java,我正在自学JavaScript.但我从未做过任何.NET,VB或C#的东西.托管代码究竟是什么意思?

维基百科简单地将其描述

在虚拟机管理下执行的代码

它特别说Java(通常)是托管代码,所以

  • 为什么这个术语似乎只适用于C#/ .NET?
  • 你可以将C#编译成包含VM的.exe,或者你必须将它打包并将其交给另一个.exe(一个java)吗?

与此相类似,

  • .NET是一种语言还是一种框架,"框架"到底意味着什么呢?

好吧,所以这不仅仅是一个问题,但对于那些曾经在我所在行业的人来说,我现在感觉N00B-ish ...

.net c# vb.net managed-code

54
推荐指数
5
解决办法
2万
查看次数

如何将引号分隔的字符串与正则表达式匹配?

如果我试图将引号分隔的字符串与正则表达式匹配,则以下哪个是"更好"(其中"更好"意味着更高效且不太可能做出意外事情):

/"[^"]+"/ # match quote, then everything that's not a quote, then a quote
Run Code Online (Sandbox Code Playgroud)

要么

/".+?"/   # match quote, then *anything* (non-greedy), then a quote
Run Code Online (Sandbox Code Playgroud)

假设这个问题是空字符串(即"")不是问题.在我看来(没有正则表达式新手,但肯定没有专家),这些将是相同的.

更新:经过反思,我认为更改+字符*无论如何都会正确处理空字符串.

regex perl

31
推荐指数
4
解决办法
8万
查看次数

我可以编译一个名称与类不同的java文件吗?

有没有办法编译java程序而没有带有基类名的java文件名.

如果是这样,请解释..

java

23
推荐指数
3
解决办法
6万
查看次数

我怎样才能找出为什么subprocess.Popen wait()如果stdout = PIPE会永远等待?

我有一个程序写入stdout和stderr.我想从python运行它,捕获stdout和stderr.我的代码看起来像:

from subprocess import *

p = Popen( exe, shell=TRUE, stdout=PIPE, stderr=PIPE )
rtrncode = p.wait()
Run Code Online (Sandbox Code Playgroud)

对于几个程序,这很好,但是当我添加一个新程序时,新的程序会永远挂起.如果我删除stdout=PIPE,程序将其输出写入控制台并完成,一切都很好.如何确定导致挂起的原因?

在Windows XP上使用python 2.5.该程序不从stdin读取,也没有任何类型的用户输入(即"按键").

python subprocess

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

您最喜欢的SVN Web应用程序部署工作流程是什么?

我们目前正在使用一个有点复杂的部署设置,涉及远程SVN服务器,DEV,STAGE和PROD的3个SVN分支,通过补丁等促进它们之间的代码.我想知道在小型开发团队情况下你使用什么部署?

svn deployment

15
推荐指数
1
解决办法
2973
查看次数

如何在装饰器中捕获异常但允许调用者捕获它?

我有一个可能引发异常的python函数.调用者捕获异常并处理它.现在我想为该函数添加一个装饰器,它捕获异常,进行一些处理,但然后重新引发异常以允许原始调用者处理它.这是有效的,除了当原始调用者从异常中显示调用堆栈时,它显示装饰器中重新引发它的行,而不是它最初发生的位置.示例代码:

import sys,traceback

def mydec(func):
    def dec():
        try:
            func()
        except Exception,e:
            print 'Decorator handled exception %s' % e
            raise e
    return dec

@mydec
def myfunc():
    x = 1/0

try:
    myfunc()
except Exception,e:
    print 'Exception: %s' % e
    type,value,tb = sys.exc_info()
    traceback.print_tb(tb)
Run Code Online (Sandbox Code Playgroud)

输出是:

Decorator handled exception integer division or modulo by zero
Exception: integer division or modulo by zero
  File "allbug.py", line 20, in <module>
    myfunc()
  File "allbug.py", line 9, in dec
    raise e
Run Code Online (Sandbox Code Playgroud)

我希望装饰器能够处理异常但跟踪应该指示x = 1/0行而不是 …

python exception decorator

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

我应该对算法使用递归或memoization吗?

如果我可以选择使用递归或memoization来解决我应该使用的问题?换句话说,如果它们都是可行的解决方案,因为它们提供了正确的输出,并且可以在我正在使用的代码中合理地表达,何时我会使用另一个?

algorithm recursion memoization

12
推荐指数
6
解决办法
2038
查看次数

virtualenv中的Python easy_install给出了setuptools错误

还有许多类似于此问题的其他StackOverflow问题,但在每种情况下,平台都不同或错误消息不同或解决方案没有效果或过时.我正在尝试设置Python 2.7.6 virtualenv并在其中安装模块,但easy_install给出了错误,指示setuptools不可用.但是AFAIK easy_install是setuptools的一部分,所以这没有任何意义.

问题只发生在virtualenv中.这就是我所做的:

  • 创建了一个全新的Red Hat 5虚拟机
  • 做了yum -y update最新的东西,重新启动
  • 下载了Python-2.7.6.tar.gz,解压缩, ./configure; make; sudo make install
  • 确认python -V给了我2.7.6并sudo python -V给了我2.7.6
  • wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
  • 修改了ez_setup.py以将--no-check-certificate标志添加到wget以解决我们网络中的代理服务器问题
  • sudo python ez_setup.py
  • sudo easy_install pip
  • sudo pip install virtualenv
  • virtualenv virtpy
  • . virtpy/bin/activate
  • easy_install elementtree

除最后一个步骤外,所有这些步骤都成功,但失败的原因是:

Traceback (most recent call last):
  File "/home/gperrow/virtpy/bin/easy_install", line 7, in <module>
    from setuptools.command.easy_install import main
  File "/home/gperrow/virtpy/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 44, in <module>
    from setuptools.package_index import PackageIndex
  File "/home/gperrow/virtpy/lib/python2.7/site-packages/setuptools/package_index.py", line 203, in <module> …
Run Code Online (Sandbox Code Playgroud)

python pip virtualenv easy-install python-2.7

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