标签: built-in

为什么__builtins__既是模块又是dict

我使用内置模块插入一些实例,因此可以全局访问它们以进行调试.该__builtins__模块的问题在于它是主脚本中的模块,并且是模块中的dict,但由于我的脚本取决于案例可以是主脚本或模块,我必须这样做:

if isinstance(__builtins__, dict):
    __builtins__['g_frame'] = 'xxx'
else:
    setattr(__builtins__, 'g_frame', 'xxx')
Run Code Online (Sandbox Code Playgroud)

有没有一个解决方法,比这更短?更重要的是,为什么__builtins__这样做?

这是一个看到这个的脚本.创建一个模块a.py:

#module-a
import b
print 'a-builtin:',type(__builtins__)
Run Code Online (Sandbox Code Playgroud)

创建一个模块b.py:

#module-b
print 'b-builtin:',type(__builtins__)
Run Code Online (Sandbox Code Playgroud)

现在运行python a.py:

$ python a.py 
b-builtin: <type 'dict'>
a-builtin: <type 'module'>
Run Code Online (Sandbox Code Playgroud)

python python-module built-in

14
推荐指数
1
解决办法
2720
查看次数

在Python打印中添加日期时间戳

我正在尝试调试我依赖的大型库的行为,它通过其许多源文件使用散布(没有过多的)调试打印语句.麻烦的是,大多数(如果不是全部)这些调试打印语句都不包含日期/时间戳,因此很难将应用程序级别的故障与库代码本身内的故障相关联.

而不是修改怀疑涉及我所看到的故障的所有调试打印的源代码,我认为有可能暂时修补内置的Python打印"功能",以便所有输出都带有前缀时间戳.

由于内置打印不是我正在使用的Python 2.6环境中的函数,我不知道这是否可行.如果有人这样做或使用另一个钩子进入Python获得了类似的结果,那么我将非常感谢你的建议,甚至更好的解决这个问题的代码.

python debugging monkeypatching built-in

14
推荐指数
2
解决办法
7729
查看次数

反向方法或反向内置函数的"更好"是什么?

什么通常被认为更Pythonic /更好/更快使用,反向方法或反向内置功能?

两者都在行动:

_list = list(xrange(4))

print _list

rlist = list(reversed(_list))

print rlist

_list.reverse()

print _list
Run Code Online (Sandbox Code Playgroud)

python methods reverse list built-in

14
推荐指数
3
解决办法
1万
查看次数

什么是MAX_INT的perl等价物?

我是perl的新手并且寻求最低价值@array.是否有一些常量代表一个非常大的整数?

我知道我可以对数组进行排序并从头开始,但这似乎是浪费了很多CPU周期.在Perl中我的问题的优雅解决方案是什么?

arrays perl constants built-in

14
推荐指数
2
解决办法
9305
查看次数

子类内置列表

我想子类化该list类型并且切片返回一个后代类型的对象,但它返回一个list.这样做的最小代码方式是什么?

如果没有一个简洁的方法,我会在内部包含一个稍微杂乱但不无理的列表.

我的代码到目前为止:

class Channel(list):
    sample_rate = 0
    def __init__(self, sample_rate, label=u"", data=[]):
        list.__init__(self,data)
        self.sample_rate = sample_rate
        self.label = label

    @property
    def nyquist_rate(self):
        return float(self.sample_rate) / 2.0
Run Code Online (Sandbox Code Playgroud)

python list subclass built-in

13
推荐指数
1
解决办法
6762
查看次数

如何提示GCC在编译时无法访问一行?

编译器通常会提供一个开关,以便在代码无法访问时发出警告.我还看到了一些库的宏,它们为无法访问的代码提供断言.

是否存在提示,例如通过编译指示或内置,我可以传递给GCC(或任何其他编译器),如果确定实际可以达到预期无法访问的行,则会在编译期间发出警告或错误?

这是一个例子:

    if (!conf->devpath) {
        conf->devpath = arg;
        return 0;
    } // pass other opts into fuse
    else {
        return 1;
    }
    UNREACHABLE_LINE();
Run Code Online (Sandbox Code Playgroud)

这个值的作用是在预期的不可达行之上的条件发生变化之后检测到该行实际上是可达的.

c gcc pragma built-in unreachable-code

13
推荐指数
3
解决办法
7387
查看次数

如何添加内置函数

我是python编程的新手.如何使用C或C++向python解释器添加新的内置函数和关键字?

python keyword built-in user-defined-functions

13
推荐指数
2
解决办法
8236
查看次数

如何查看内置javascript函数的来源?

例如alert(),Object(),String()等.

我怎么看这些函数背后的代码?我是否需要理解V8等引擎的语言并通读它,或者是否有更简单的解决方案.

javascript built-in javascript-engine

13
推荐指数
1
解决办法
2259
查看次数

为什么array.min这么慢?

我注意到这array.min似乎很慢,所以我对我自己的天真实现进行了这个测试:

require 'benchmark'
array = (1..100000).to_a.shuffle

Benchmark.bmbm(5) do |x|
  x.report("lib:") { 99.times { min = array.min } }
  x.report("own:") { 99.times { min = array[0]; array.each { |n| min = n if n < min } } }
end
Run Code Online (Sandbox Code Playgroud)

结果:

Rehearsal -----------------------------------------
lib:    1.531000   0.000000   1.531000 (  1.538159)
own:    1.094000   0.016000   1.110000 (  1.102130)
-------------------------------- total: 2.641000sec

            user     system      total        real
lib:    1.500000   0.000000   1.500000 (  1.515249)
own:    1.125000   0.000000   1.125000 (  1.145894)
Run Code Online (Sandbox Code Playgroud)

我感到震惊.我自己的实现如何通过each内置运行块来运行?并且打败了这么多?

我有点错吗?或者这是不正常的?我糊涂了.


我的Ruby版本,在Windows …

ruby performance min built-in

13
推荐指数
1
解决办法
302
查看次数

如何覆盖内置的PHP函数?

我想覆盖一下mysql_num_rows,让我们说下面的话:

$dataset = array(array('id' => 1, 'name' => 'Zlatan', 'onSOF' => 1), array('id' => 1, 'name' => 'Guest', 'onSOF' => 0));

function mysql_num_rows($dataset) {
    return sizeof($dataset);
}
Run Code Online (Sandbox Code Playgroud)

PHP是否支持内置函数覆盖?


扩展

我想创建一个OpenSource解决方案,它将覆盖所有现有的mysql_*函数,它的函数体我将使用PDO实例和方法以及属性.

这意味着已经使用mysql_*并且难以完全移动到PDO的用户应该只包含此函数覆盖,并且所有属性,函数调用,函数返回值,参数值等应该保持不变.

php overriding built-in

12
推荐指数
1
解决办法
1万
查看次数