我昨天和朋友一起吃午饭,他们null在C#中抱怨.他说那null是不合逻辑的.我决定测试他的说法,所以我测试了一些简单的逻辑命题:
Console.WriteLine(null == null); //True
//Console.WriteLine(null == !!null); //BOOM
Console.WriteLine(10 >= null); //False
Console.WriteLine(10 <= null); //False
Console.WriteLine(!(10 >= null)); //True
Console.WriteLine(!(10 <= null)); //True
Run Code Online (Sandbox Code Playgroud)
检查平等似乎很简单,这就是我所期望的.然而,更多/更少的陈述是逻辑矛盾,我觉得这真的很混乱!这些不应该抛出?否定操作会像您期望的那样抛出.
如果我尝试null在Ruby或Python中运行比较(除了相等),我会得到一个类型错误:"无法将数字与nil进行比较".为什么C#不这样做?
是否有现有函数来估算Pandas或Statsmodels的固定效应(单向或双向).
以前在Statsmodels中有一个函数,但似乎已经停止了.在Pandas中,有一些叫做的东西plm,但是我无法导入或运行它pd.plm().
模块加载如何在CPython下工作?特别是,用C编写的扩展的动态加载如何工作?我在哪里可以了解到这一点?
我发现源代码本身相当压倒性.我可以看到,可靠的ol' dlopen()和朋友用在支持它的系统上但没有任何大局观,从源代码中解决这个问题需要很长时间.
关于这个主题可以写很多,但据我所知,几乎没有任何内容 - 描述Python语言本身的大量网页使搜索变得困难.一个很好的答案将提供一个相当简短的概述和参考资源,我可以了解更多.
我最关心的是它是如何在类Unix系统上运行的,因为这就是我所知道的但我感兴趣的是如果这个过程在其他地方类似.
为了更具体(但风险假设太多),CPython如何使用模块方法表和初始化函数来"理解"动态加载的C?
python cpython dynamic-loading python-import python-internals
我想设计一个Scala程序,它接受Scala文件作为参数,可以自定义程序的执行.特别是,我想在运行时提供包含将由程序调用的方法的实现的文件.如何正确依赖外部文件并在运行时动态调用其方法?理想情况下,我还希望这些文件能够依赖于我的程序中的方法和类.
示例场景:我有一个包含该行的函数val p: Plant = Greenhouse.getPlant(),并且Greenhouse该getPlant方法的类在将在运行时提供的其中一个文件中定义.在该文件中,该方法getPlant返回a Rose,where Rose <: Plant和Plant在原始程序中定义.假设文件仅在运行时加入而不是在编译时加入,我如何实现(或近似)这种相互依赖性?
这是一个重现问题的测试:
$ echo "void whatever() {}" > prog.c
$ gcc prog.c
Run Code Online (Sandbox Code Playgroud)
这会在GCC 4.8.4上产生以下错误:
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
... etc ...
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: …Run Code Online (Sandbox Code Playgroud) 我正在使用Pygame来绘制一些东西.问题是它们有很多别名边缘:

我想让它们更柔和,像这样:

到目前为止,我的想法是绘制双倍大小的形状,然后使用
pygame.transform.smoothscale(surf, (w/2, h/2))
Run Code Online (Sandbox Code Playgroud)
把它缩小到我想要的尺寸.
不幸的是,如果我在透明表面上绘制我的形状,平滑刻度会使触摸透明像素的边缘变黑!
我正在使用Eclipse for Windows并出现此错误:
构建配置调试项目helloworld
(无法运行程序"make":启动失败)
我该怎么做才能解决这个问题?
我试图向我们的小组展示Cython的优点,以提高Python的性能.我已经展示了几个基准测试,所有测试都只是通过以下方式加速:
但是,我们的许多代码都进行了字符串操作,而且我无法通过键入Python字符串来提供优化代码的好例子.
我试过的一个例子是:
cdef str a
cdef int i,j
for j in range(1000000):
a = str([chr(i) for i in range(127)])
Run Code Online (Sandbox Code Playgroud)
但是输入'a'作为字符串实际上会使代码运行得更慢.我已经阅读了关于'Unicode和传递字符串'的文档,但是在我展示的情况下,我对它是如何应用感到困惑.我们不使用Unicode - 一切都是纯ASCII.我们使用的是Python 2.7.2
任何建议表示赞赏.
所以我试图在我自己使用的python脚本中分析一个函数line_profiler,因为我想要逐行时序.唯一的问题是该函数是一个Cython函数,并且line_profiler无法正常工作.在第一次运行时,它只是崩溃了一个错误.然后我补充道
!python
cython: profile=True
cython: linetrace=True
cython: binding=True
Run Code Online (Sandbox Code Playgroud)
在我的脚本的顶部,现在运行正常,除了时间和统计是空白的!
有没有办法使用line_profilerCythonized函数?
我可以分析非Cythonized函数,但它比Cythonized函数慢得多,我无法使用来自分析的信息 - 纯python的慢速将使我无法改进Cython的一个.
这是我想要分析的函数的代码:
class motif_hit(object):
__slots__ = ['position', 'strand']
def __init__(self, int position=0, int strand=0):
self.position = position
self.strand = strand
#the decorator for line_profiler
@profile
def find_motifs_cython(list bed_list, list matrices=None, int limit=0, int mut=0):
cdef int q = 3
cdef list bg = [0.25, 0.25, 0.25, 0.25]
cdef int matrices_length = len(matrices)
cdef int results_length = 0
cdef int results_length_shuffled = 0 …Run Code Online (Sandbox Code Playgroud) 我在下面展示的代码有效,但我不确定为什么.
我在用:
这段代码主要来自这个视频教程和git页面,但遗憾的是我没有"开箱即用".
这种包装的目的是通过Python提供对一个简单的C函数的访问,该函数接受整数或整数结构并将它们加在一起.
这需要5个文件,如下所述:
adder.c:两个加法器函数的C代码:add(标量输入)和pair_add(struct输入)adder.h:adder.c的头文件c_adder.pxd:一个cython头文件 - 基本上告诉cython要关注主头文件的哪些部分 cy_adder.pyx:用于在python命名空间中定义两个函数的cython代码setup.py:一个distutils文件,用于执行cython代码的编译并且该过程生成两个文件
c_adder.c:一个中级cython c文件c_adder.so:可以导入命名空间的python模块输入文件如下:
adder.c
#include <stdlib.h>
#include "adder.h"
int
pair_add(PAIR * ppair) {
return ppair->x + ppair->y;
}
int
add(int x, int y) {
return x + y;
}
Run Code Online (Sandbox Code Playgroud)
adder.h
typedef struct {
int x;
int y;
} PAIR;
int pair_add(PAIR * …Run Code Online (Sandbox Code Playgroud) python ×6
cython ×3
c ×2
antialiasing ×1
c# ×1
cpython ×1
eclipse ×1
gcc ×1
logic ×1
optimization ×1
pandas ×1
performance ×1
profiling ×1
pygame ×1
regression ×1
scala ×1
statsmodels ×1
string ×1
word-wrap ×1