在Python中使用DLL文件最简单的方法是什么? 具体来说,如何在不编写任何额外的包装C ++代码来向Python公开function的情况下做到这一点? 与使用第三方库相比,本机Pythonfunction更受欢迎。
我想从网站上获取每日日出日落时间。 是否有可能使用Python刮取网页内容? 什么是模块使用? 有没有任何教程可用?
在现代Python中声明自定义exception类的正确方法是什么? 我的主要目标是遵循任何标准的其他exception类,以便(例如)我包含在exception中的任何额外string通过任何工具捕获exception而打印出来。 对于“现代Python”,我指的是在Python 2.5中运行的东西,但对于Python 2.6和Python 3。 通过“自定义”,我的意思是一个Exception对象,可以包含有关错误原因的额外数据:一个string,也许还有一些其他与exception相关的任意对象。 我被Python 2.6.2中的下面的弃用警告绊倒了: >>> class MyError(Exception): … def __init__(self, message): … self.message = message … >>> MyError("foo") _sandbox.py:3: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6 BaseException对于名为message属性有特殊的含义,这似乎很疯狂。 我从PEP-352那里收集到的那个属性在2.5中有一个特殊的含义,他们试图贬低它,所以我猜这个名字(现在只有这个名字)现在被禁止了吗? 啊。 我也模糊地意识到, Exception有一些神奇的参数args ,但我从来不知道如何使用它。 我也不确定这是做事的正确方法。 我在网上发现的很多讨论都build议他们试图取消Python 3中的参数。 更新:两个答案build议覆盖__init__和__str__ / __unicode__ / __repr__ 。 这似乎很多打字,是否有必要?
我已经了解到Python是一种解释型语言…但是,当我查看我的Python源代码时,我看到了Windows标识为“编译的Python文件”的.pyc文件。 这些进来了?
我找不到一个明确的答案。 AFAIK,在Python类中不能有多个__init__函数。 那么解决这个问题的好方法是什么? 假设我有一个叫做Cheese的类,它有number_of_holes属性。 我怎么能有两种方法来创build奶酪对象… 一个需要像这样的一些洞: parmesan = Cheese(num_holes = 15) 和一个不采取任何论据,只是随机number_of_holes属性: gouda = Cheese() 我只能想到一个方法来做到这一点,但似乎有点笨重: class Cheese(): def __init__(self, num_holes = 0): if (num_holes == 0): # randomize number_of_holes else: number_of_holes = num_holes 你说什么? 有没有更好的办法?
我知道我可以这样做: try: # do something that may fail except: # do this if ANYTHING goes wrong 我也可以这样做: try: # do something that may fail except IDontLikeYouException: # say please except YouAreTooShortException: # stand on a ladder 但如果我想在两个不同的例外情况下做同样的事情,我现在能想到的最好的办法就是这样做: try: # do something that may fail except IDontLikeYouException: # say please except YouAreBeingMeanException: # say please 有什么办法可以做这样的事情吗(因为在这两个例外的行动是say […]
在这篇文章给出的例子中,有人提到,如果使用默认的绑定标签,那么事件的值在定义里面是不可见的(会有一个滞后)。 关于类绑定有一些解释。 我是初学者,所以想了解详细的原因。 有些人可以解释为什么它不是在第一种情况下工作,并在第二种情况下工作(当绑定标签的顺序被修改时)。 import Tkinter def OnKeyPress(event): value = event.widget.get() string="value of %s is '%s'" % (event.widget._name, value) status.configure(text=string) root = Tkinter.Tk() entry1 = Tkinter.Entry(root, name="entry1") entry2 = Tkinter.Entry(root, name="entry2") entry3 = Tkinter.Entry(root, name="entry3") entry1.bindtags(('.entry1', 'Entry', '.', 'all')) entry2.bindtags(('Entry', '.entry1', '.', 'all')) entry3.bindtags(('.entry1','Entry','post-class-bindings', '.', 'all')) btlabel1 = Tkinter.Label(text="bindtags: %s" % " ".join(entry1.bindtags())) btlabel2 = […]
以下代码在Python2和Python3给出了不同的输出: from sys import version print(version) def execute(a, st): b = 42 exec("b = {}\nprint('b:', b)".format(st)) print(b) a = 1. execute(a, "1.E6*a") Python2打印: 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] ('b:', 1000000.0) 1000000.0 Python3打印: 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] b: 1000000.0 42 为什么Python2将execute函数中的variablesb绑定到exec函数string中的值,而Python3不这样做? 我如何在Python3实现Python2的行为? 我已经尝试将globals和locals的字典传递给Python3 […]
为什么发生这种情况? 我真的不明白: >>> P = [ [()]*3 ]*3 >>> P [[(), (), ()], [(), (), ()], [(), (), ()]] >>> P[0][0]=1 >>> P [[1, (), ()], [1, (), ()], [1, (), ()]]
是否有可能修改下面的代码,从“标准输出”和“标准错误”打印输出: 打印在terminal上 (实时), 最后存储在输出和errsvariables? 代码: #!/usr/bin/python3 # -*- coding: utf-8 -*- import subprocess def run_cmd(command, cwd=None): p = subprocess.Popen(command, cwd=cwd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) outs, errs = p.communicate() rc = p.returncode outs = outs.decode('utf-8') errs = errs.decode('utf-8') return (rc, (outs, errs)) 感谢@unutbu,特别感谢@ jf-sebastian,最终的function: #!/usr/bin/python3 # -*- coding: utf-8 -*- import sys from queue import Queue from […]