我正在编写C扩展,我想让我的方法的签名可见为内省.
static PyObject* foo(PyObject *self, PyObject *args) {
/* blabla [...] */
}
PyDoc_STRVAR(
foo_doc,
"Great example function\n"
"Arguments: (timeout, flags=None)\n"
"Doc blahblah doc doc doc.");
static PyMethodDef methods[] = {
{"foo", foo, METH_VARARGS, foo_doc},
{NULL},
};
PyMODINIT_FUNC init_myexample(void) {
(void) Py_InitModule3("_myexample", methods, "a simple example module");
}
Run Code Online (Sandbox Code Playgroud)
现在,如果(在构建它之后......)我加载模块并查看它的帮助:
>>> import _myexample
>>> help(_myexample)
Run Code Online (Sandbox Code Playgroud)
我会得到:
Help on module _myexample:
NAME
_myexample - a simple example module
FILE
/path/to/module/_myexample.so
FUNCTIONS
foo(...)
Great example function
Arguments: (timeout, flags=None)
Doc blahblah doc doc …Run Code Online (Sandbox Code Playgroud) 是否有一种简单的方法可以在课程中的每个函数的开头和结尾处执行某些操作?我已经调查了__getattribute__,但我认为在这种情况下我不能使用它吗?
这是我正在尝试做的简化版本:
class Thing():
def __init__(self):
self.busy = False
def func_1(self):
if self.busy:
return None
self.busy = True
...
self.busy = False
def func_2(self):
if self.busy:
return None
self.busy = True
...
self.busy = False
...
Run Code Online (Sandbox Code Playgroud) 我给了一个数组,当我绘制它时,我得到一个带有一些噪音的高斯形状.我想要适合高斯.这是我已经拥有的,但是当我绘制这个时,我没有得到一个拟合的高斯,而是我只是得到一条直线.我尝试了很多不同的方法,但我无法理解.
random_sample=norm.rvs(h)
parameters = norm.fit(h)
fitted_pdf = norm.pdf(f, loc = parameters[0], scale = parameters[1])
normal_pdf = norm.pdf(f)
plt.plot(f,fitted_pdf,"green")
plt.plot(f, normal_pdf, "red")
plt.plot(f,h)
plt.show()
Run Code Online (Sandbox Code Playgroud)

PyPI现在有一个月的numpy 1.13.3软件包https://pypi.python.org/pypi/numpy
Anaconda云声称拥有1.13 https://anaconda.org/anaconda/numpy
但是当我使用时,我只得到1.11.3-py35_0 conda update numpy
我的环境:Windows 7 64位python 3.5
我想帮助理解为什么这段代码没有按预期工作.
如果想要更改字典的键但保留值,他/她可能会使用:
d[new_key] = d.pop[old_key]
Run Code Online (Sandbox Code Playgroud)
我想修改所有键(并保持值到位),但下面的代码跳过某些行 - ("col2")保持不变.是因为字典是无序的,我不断改变其中的值?
如何在不创建新字典的情况下更改密钥并保留值?
import time
import pprint
name_dict = {"col1": 973, "col2": "1452 29th Street",
"col3": "Here is a value", "col4" : "Here is another value",
"col5" : "NULL", "col6": "Scottsdale",
"col7": "N/A", "col8" : "41.5946922",
"col9": "Building", "col10" : "Commercial"}
for k, v in name_dict.items():
print("This is the key: '%s' and this is the value '%s'\n" % (k, v) )
new_key = input("Please enter a new key: ")
name_dict[new_key] = name_dict.pop(k)
time.sleep(4)
pprint.pprint(name_dict)
Run Code Online (Sandbox Code Playgroud) 现在我正在尝试编写汇编程序,但我不断收到此错误:
Traceback (most recent call last):
File "/Users/Douglas/Documents/NeWS.py", line 44, in
if item in registerTable[item]:
KeyError: 'LD'
我目前有这个代码:
functionTable = {"ADD":"00",
"SUB":"01",
"LD" :"10"}
registerTable = {"R0":"00",
"R1":"00",
"R2":"00",
"R3":"00"}
accumulatorTable = {"A" :"00",
"B" :"10",
"A+B":"11"}
conditionTable = {"JH":"1"}
valueTable = {"0":"0000",
"1":"0001",
"2":"0010",
"3":"0011",
"4":"0100",
"5":"0101",
"6":"0110",
"7":"0111",
"8":"1000",
"9":"1001",
"10":"1010",
"11":"1011",
"12":"1100",
"13":"1101",
"14":"1110",
"15":"1111"}
source = "LD R3 15"
newS = source.split(" ")
for item in newS:
if item in functionTable[item]:
functionField = functionTable[item]
else:
functionField …Run Code Online (Sandbox Code Playgroud) 我知道我可以删除单个环境
conda remove -n envname --all
Run Code Online (Sandbox Code Playgroud)
但是我经常创建多个新的环境来安装一个特定的软件包或对它进行测试,所以我经常最终得到5-10个环境,将它们相互删除是很痛苦的.是否有一种简单的方法(对于Windows)删除除根环境之外的所有环境?
我有一个字典,其值有时作为字符串,有时作为函数.对于作为函数的值,有一种方法可以在()访问密钥时执行函数而无需显式键入?
例:
d = {1: "A", 2: "B", 3: fn_1}
d[3]() # To run function
Run Code Online (Sandbox Code Playgroud)
我想要:
d = {1: "A", 2: "B", 3: magic(fn_1)}
d[3] # To run function
Run Code Online (Sandbox Code Playgroud) 作为在正常情况下使用builtin__import__()的问题的后续内容,我进行了一些测试,并且遇到了令人惊讶的结果.
我在这里比较经典import语句的执行时间和对__import__内置函数的调用.为此,我在交互模式下使用以下脚本:
import timeit
def test(module):
t1 = timeit.timeit("import {}".format(module))
t2 = timeit.timeit("{0} = __import__('{0}')".format(module))
print("import statement: ", t1)
print("__import__ function:", t2)
print("t(statement) {} t(function)".format("<" if t1 < t2 else ">"))
Run Code Online (Sandbox Code Playgroud)
与链接问题一样,以下是导入时的比较sys以及其他一些标准模块:
>>> test('sys')
import statement: 0.319865173171288
__import__ function: 0.38428380458522987
t(statement) < t(function)
>>> test('math')
import statement: 0.10262547545597034
__import__ function: 0.16307580163101054
t(statement) < t(function)
>>> test('os')
import statement: 0.10251490255312312
__import__ function: 0.16240755669640627
t(statement) < t(function)
>>> test('threading')
import statement: 0.11349136644972191 …Run Code Online (Sandbox Code Playgroud) 考虑我有这些列表:
l = [5,6,7,8,9,10,5,15,20]
m = [10,5]
Run Code Online (Sandbox Code Playgroud)
我想要得到的指数m在l.我使用list comprehension来做到这一点:
[(i,i+1) for i,j in enumerate(l) if m[0] == l[i] and m[1] == l[i+1]]
Run Code Online (Sandbox Code Playgroud)
输出: [(5,6)]
但如果我有更多的数字m,我觉得它不是正确的方法.那么Python或NumPy有什么简单的方法吗?
另一个例子:
l = [5,6,7,8,9,10,5,15,20,50,16,18]
m = [10,5,15,20]
Run Code Online (Sandbox Code Playgroud)
输出应该是:
[(5,6,7,8)]
Run Code Online (Sandbox Code Playgroud) python ×10
dictionary ×3
anaconda ×2
conda ×2
numpy ×2
python-3.x ×2
callback ×1
class ×1
for-loop ×1
function ×1
gaussian ×1
keyerror ×1
list ×1
performance ×1
python-2.7 ×1
python-c-api ×1
scipy ×1