Tag: python

为什么非默认参数不能遵循默认参数?

为什么这段代码抛出一个语法错误? >>> def fun1(a="who is you", b="True", x, y): … print a,b,x,y … File "<stdin>", line 1 SyntaxError: non-default argument follows default argument 虽然下面的一段代码是正确的… >>> def fun1(x, y, a="who is you", b="True"): … print a,b,x,y … 我正在学习编程,请耐心等待我….

`staticmethod`和`abc.abstractmethod`:它会混合吗?

在我的Python应用程序中,我想创build一个既是staticmethod又是abc.abstractmethod方法的方法。 我该怎么做呢? 我尝试应用两个装饰器,但它不工作。 如果我这样做: import abc class C(object): __metaclass__ = abc.ABCMeta @abc.abstractmethod @staticmethod def my_function(): pass 我得到一个exception*,如果我这样做: class C(object): __metaclass__ = abc.ABCMeta @staticmethod @abc.abstractmethod def my_function(): pass 抽象方法没有被强制执行。 我怎样才能做一个抽象的静态方法? *例外: File "c:\Python26\Lib\abc.py", line 29, in abstractmethod funcobj.__isabstractmethod__ = True AttributeError: 'staticmethod' object has no attribute '__isabstractmethod__'

python argh / argparse:我如何传递一个列表作为命令行参数?

我想使用argh库将参数列表传递给python脚本。 可以采取如下input的东西: ./my_script.py my-func –argA blah –argB 1 2 3 4 ./my_script.py my-func –argA blah –argB 1 ./my_script.py my-func –argA blah –argB 我的内部代码如下所示: import argh @argh.arg('–argA', default="bleh", help='My first arg') @argh.arg('–argB', default=[], help='A list-type arg–except it\'s not!') def my_func(args): "A function that does something" print args.argA print args.argB for b in args.argB: print int(b)*int(b) #Print […]

PYTHONPATH与sys.path

另一位开发者和我不同意应该使用PYTHONPATH还是sys.path来允许Python在用户(例如,开发)目录中find一个Python包。 我们有一个典型的目录结构的Python项目: Project setup.py package __init__.py lib.py script.py 在script.py中,我们需要import package.lib 。 当软件包安装在站点包中时,script.py可以findpackage.lib 。 但是,从用户目录进行工作时,还需要做其他事情。 我的解决scheme是设置我的PYTHONPATH包括“〜/项目”。 另一个开发者想把这行代码放在script.py的开头: sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 所以Python可以findpackage.lib的本地副本。 我认为这是一个坏主意,因为这条线只对开发者或从本地副本运行的人有用,但我不能给出一个很好的理由,为什么这是一个坏主意。 我们应该使用PYTOHNPATH,sys.path,还是罚款?

赶上Ctrl + C / SIGINT并在python中优雅退出多进程

如何在多进程python程序中捕获Ctrl + C并正常退出所有进程,我需要解决scheme在unix和windows上都能运行。 我已经尝试了以下内容: import multiprocessing import time import signal import sys jobs = [] def worker(): signal.signal(signal.SIGINT, signal_handler) while(True): time.sleep(1.1234) print "Working…" def signal_handler(signal, frame): print 'You pressed Ctrl+C!' # for p in jobs: # p.terminate() sys.exit(0) if __name__ == "__main__": for i in range(50): p = multiprocessing.Process(target=worker) jobs.append(p) p.start() 这是一种工作,但我不认为这是正确的解决scheme。 编辑:这可能是这个的重复

Pythonexception链接

在Python中使用exception链是否有一个标准的方法? 像Javaexception'造成'? 这是一些背景。 我有一个主要exception类DSError模块: class DSError(Exception): pass 在这个模块的某个地方会有: try: v = my_dict[k] something(v) except KeyError as e: raise DSError("no key %s found for %s" % (k, self)) except ValueError as e: raise DSError("Bad Value %s found for %s" % (v, self)) except DSError as e: raise DSError("%s raised in %s" % (e, self)) 基本上这个片段应该只抛出DSError,告诉我发生了什么,为什么。 事情是,try块可能会抛出很多其他exception,所以我宁愿如果我可以做这样的事情: […]

setuptools:打包数据文件夹的位置

我使用setuptools来分发我的python包。 现在我需要分发额外的数据文件。 从我从setuptools文档中得到的信息,我需要将我的数据文件放在软件包目录中。 不过,我宁愿将我的数据文件放在根目录的子目录中。 我想避免的是: / #root |- src/ | |- mypackage/ | | |- data/ | | | |- resource1 | | | |- […] | | |- __init__.py | | |- […] |- setup.py 我想代之以: / #root |- data/ | |- resource1 | |- […] |- src/ | |- mypackage/ | | |- […]

为什么Borg模式比Python中的Singleton模式更好?

为什么Borg模式比Singleton模式更好? 我问,因为我没有看到他们导致任何不同。 博格: class Borg: __shared_state = {} # init internal state variables here __register = {} def __init__(self): self.__dict__ = self.__shared_state if not self.__register: self._init_default_register() 辛格尔顿: class Singleton: def __init__(self): # init internal state variables here self.__register = {} self._init_default_register() # singleton mechanics external to class, for example this in the module Singleton = […]

有没有一个好的,免费的小型Python网页主机?

我想为自己的个人使用开发一个networking应用程序,我可以通过手机和电脑访问。 我想我会磨练我的Python技能,并使用一个简单的Python Web框架来编写它。 我可以使用哪些主机托pipe我的Web应用程序

如何将“auto”设置为上限,但使用matplotlib.pyplot保持固定的下限

我想将y轴的上限设置为“自动”,但是我想保持y轴的下限始终为零。 我尝试过“自动”和“自动调整”,但这些似乎并不奏效。 先谢谢你。 这是我的代码: import matplotlib.pyplot as plt def plot(results_plt,title,filename): ############################ # Plot results # mirror result table such that each parameter forms an own data array plt.cla() #print results_plt XY_results = [] XY_results = zip( *results_plt) plt.plot(XY_results[0], XY_results[2], marker = ".") plt.title('%s' % (title) ) plt.xlabel('Input Voltage [V]') plt.ylabel('Input Current [mA]') plt.grid(True) plt.xlim(3.0, 4.2) […]