我已经编写了近二十年的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) 我有一个例程,它将一个字符串列表作为参数,但我想支持传入一个字符串并将其转换为一个字符串列表.例如:
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"的方式吗?
我已经写了近二十年的C/C++代码了,我也知道Perl,Python,PHP和一些Java,我正在自学JavaScript.但我从未做过任何.NET,VB或C#的东西.托管代码究竟是什么意思?
维基百科简单地将其描述为
在虚拟机管理下执行的代码
它特别说Java(通常)是托管代码,所以
与此相类似,
好吧,所以这不仅仅是一个问题,但对于那些曾经在我所在行业的人来说,我现在感觉N00B-ish ...
如果我试图将引号分隔的字符串与正则表达式匹配,则以下哪个是"更好"(其中"更好"意味着更高效且不太可能做出意外事情):
/"[^"]+"/ # 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)
假设这个问题是空字符串(即"")不是问题.在我看来(没有正则表达式新手,但肯定没有专家),这些将是相同的.
更新:经过反思,我认为更改+字符*无论如何都会正确处理空字符串.
我有一个程序写入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读取,也没有任何类型的用户输入(即"按键").
我们目前正在使用一个有点复杂的部署设置,涉及远程SVN服务器,DEV,STAGE和PROD的3个SVN分支,通过补丁等促进它们之间的代码.我想知道在小型开发团队情况下你使用什么部署?
我有一个可能引发异常的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行而不是 …
如果我可以选择使用递归或memoization来解决我应该使用的问题?换句话说,如果它们都是可行的解决方案,因为它们提供了正确的输出,并且可以在我正在使用的代码中合理地表达,何时我会使用另一个?
还有许多类似于此问题的其他StackOverflow问题,但在每种情况下,平台都不同或错误消息不同或解决方案没有效果或过时.我正在尝试设置Python 2.7.6 virtualenv并在其中安装模块,但easy_install给出了错误,指示setuptools不可用.但是AFAIK easy_install是setuptools的一部分,所以这没有任何意义.
问题只发生在virtualenv中.这就是我所做的:
yum -y update最新的东西,重新启动./configure; make; sudo make installpython -V给了我2.7.6并sudo python -V给了我2.7.6wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py--no-check-certificate标志添加到wget以解决我们网络中的代理服务器问题sudo python ez_setup.pysudo easy_install pipsudo pip install virtualenvvirtualenv virtpy. virtpy/bin/activateeasy_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 ×4
.net ×1
algorithm ×1
c# ×1
c++ ×1
casting ×1
decorator ×1
deployment ×1
duck-typing ×1
easy-install ×1
exception ×1
java ×1
list ×1
managed-code ×1
memoization ×1
perl ×1
pip ×1
pointers ×1
python-2.7 ×1
recursion ×1
regex ×1
subprocess ×1
svn ×1
vb.net ×1
virtualenv ×1