标签: function-call

被一行Python困扰

我通过Berkely非正式地做了一个python课程CS61A,我完全被一个简单的任务所困扰,这个任务要求我在提供的模板的最后只提供一个表达式.这是问题代码:

# HW 4 Q5. (fall 2012)

def square(x):
    return x*x

def compose1(f, g):
    """Return a function of x that computes f(g(x))."""
    return lambda x: f(g(x))

from functools import reduce

def repeated(f, n):
    """Return the function that computes the nth application of f, for n>=1.

    f -- a function that takes one argument
    n -- a positive integer

    >>> repeated(square, 2)(5)
    625
    >>> repeated(square, 4)(5)
    152587890625
    """
    assert type(n) == int and n > 0, "Bad n"
    return reduce(compose1, "*** …
Run Code Online (Sandbox Code Playgroud)

python reduce function-call

5
推荐指数
2
解决办法
463
查看次数

Perl函数调用困惑了我

一个perl函数调用让我感到困惑,任何人都可以帮助我吗?

catFiles 像这样叫:

catFiles( \@LINKFILES => "$output_prefix.links" );
Run Code Online (Sandbox Code Playgroud)

catFiles 功能定义:

sub catFiles {

    unlink("$_[1]") if(exists $_[1]);
    system qq( cat "$_" >> "$_[1]" ) for @{$_[0]};
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么=>我认为它应该是一个,.

perl function-call

5
推荐指数
1
解决办法
138
查看次数

查找对特定内置MATLAB函数的间接调用

我想要什么?

我正在寻找一种方法来检测我的代码中调用特定函数的所有点.

我为什么要这样?

一些例子:

  • 有些输出是排序的或随机的,我想知道这发生了什么
  • 我正在考虑更改/重载一个函数,并想知道我的代码的哪一部分可能会产生影响

我试过了什么?

  • 我尝试在被调用的文件中放置一个断点.这仅适用于非内置函数,这些函数是从始终执行所有内容的短运行代码调用的.
  • 我试着"查找文件",这样,我可以很容易地找到直接调用sort,但它不是那么容易找到一个电话sort援引unique的例子.
  • 我试过depfun,它告诉我:
    • 是否会被召唤
    • 从哪里调用非内置函数
  • 我想过重载内置功能,但感觉就像是我的最后手段,因为我害怕弄得一团糟.| 编辑:由于功能优先,它也可能无济于事.

这个问题

跟踪从特定函数到特定(内置)函数的所有潜在(in)直接函数调用的最佳方法是什么.

debugging matlab built-in function-call

5
推荐指数
1
解决办法
177
查看次数

如何执行具有 64 位绝对地址的调用指令?

我正在尝试从机器代码调用一个函数 - 在编译和链接时应该有一个绝对地址。我正在创建一个指向所需函数的函数指针,并试图将其传递给 call 指令,但我注意到 call 指令最多占用 16 位或 32 位地址。有没有办法调用绝对 64 位地址?

我正在部署 x86-64 架构并使用 NASM 生成机器代码。

如果我可以保证可执行文件肯定会映射到内存的底部 4GB,我可以使用 32 位地址,但我不确定在哪里可以找到该信息。

编辑:我不能使用 callf 指令,因为这需要我禁用 64 位模式。

第二次编辑:我也不想将地址存储在寄存器中并调用寄存器,因为这对性能至关重要,而且我无法承受间接函数调用的开销和性能影响。

最终编辑:通过确保我的机器代码映射到前 2GB 内存,我能够使用 rel32 调用指令。这是通过带有 MAP_32BIT 标志的 mmap 实现的(我使用的是 linux):

MAP_32BIT (自 Linux 2.4.20, 2.6) 将映射放入进程地址空间的前 2 GB。对于 64 位程序,此标志仅在 x86-64 上受支持。添加它是为了允许在前 2GB 内存中的某处分配线程堆栈,以提高某些早期 64 位处理器上的上下文切换性能。现代 x86-64 处理器不再具有此功能?形式问题,因此在这些系统上不需要使用此标志。设置 MAP_FIXED 时,将忽略 MAP_32BIT 标志。

assembly jit x86-64 nasm function-call

5
推荐指数
1
解决办法
7292
查看次数

Perl中的函数调用和goto&NAME有什么区别?

我正在阅读非常有趣的Perl.但是在Perl中从这里读到goto的时候我有一个疑问.

我知道goto语句有三种类型.

标签LABEL.

转到EXPR.

转到和NAME.

但在这三种类型中,第三种类型的用途是goto &NAME什么?这似乎也像一个函数调用.然后,

  1. Perl goto &NAME和普通之间的真正区别是什么function call
  2. 在使用goto&NAME的时候?

任何人都可以用例子解释.

提前致谢.

perl goto function-call

5
推荐指数
1
解决办法
579
查看次数

在 AngularJS 中完全加载页面后执行函数

我想在页面完全加载后立即执行此功能。

vm.pointInvoice = () => {   
    if ($stateParams.property == "INVOICE") {
        vm.invoiceEdit($stateParams.checkin)
        vm.invoiceFocus = true;
        vm.receiptFocus = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将该功能作为按钮(只是为了测试它),则一切正常

<button ng-click="vm.pointInvoice()">OPEN AND POINT TO INVOICE</button>
Run Code Online (Sandbox Code Playgroud)

但是,无论我做什么 - 我根本无法让它自动执行我的功能(当页面完全加载并且所有数据/元素都可用时)。

幸运的是 Stack Overflow 上有很多关于页面已满载的帖子,所以我尝试了一大堆帖子,但没有一个有效,它们都在页面仍然空白时触发了该功能。

这些是我尝试过的一些:

$scope.$on('$viewContentLoaded', function(){
    debugger;
});

angular.element(document).ready(function () {
    debugger;
});

$scope.$on('$stateChangeSuccess', function () {
    debugger;
});
Run Code Online (Sandbox Code Playgroud)

所以我剩下的唯一想法就是做一些丑陋的setTimeout(function(){ vm.pointInvoice() }, 3000);黑客,但对我来说这有点像放弃:-D

当页面完全加载时,必须有某种方法来触发一个函数......

javascript function-call angularjs angularjs-1.6

5
推荐指数
1
解决办法
5698
查看次数

函数调用开销 - 为什么内置 Python 内置函数看起来比我的内置函数更快?

我对开销很感兴趣,所以我编写了一个最小的 C 扩展,导出两个函数nop,并且starnop或多或少不执行任何操作。他们只是传递他们的输入(两个相关的函数位于顶部,其余的只是乏味的样板代码):

\n\n

amanmodule.c:

\n\n
#include <Python.h>\n\nstatic PyObject* aman_nop(PyObject *self, PyObject *args)\n{\n  PyObject *obj;\n\n  if (!PyArg_UnpackTuple(args, "arg", 1, 1, &obj))\n    return NULL;\n  Py_INCREF(obj);\n  return obj;\n}\n\nstatic PyObject* aman_starnop(PyObject *self, PyObject *args)\n{\n  Py_INCREF(args);\n  return args;\n}\n\nstatic PyMethodDef AmanMethods[] = {\n  {"nop",  (PyCFunction)aman_nop, METH_VARARGS,\n   PyDoc_STR("nop(arg) -> arg\\n\\nReturn arg unchanged.")},\n  {"starnop", (PyCFunction)aman_starnop, METH_VARARGS,\n   PyDoc_STR("starnop(*args) -> args\\n\\nReturn tuple of args unchanged")},\n  {NULL, NULL}\n};\n\nstatic struct PyModuleDef amanmodule = {\n    PyModuleDef_HEAD_INIT,\n    "aman",\n    "aman - a module about nothing.\\n\\n"\n    "Provides functions \'nop\' and \'starnop\' …
Run Code Online (Sandbox Code Playgroud)

c python overhead function-call

5
推荐指数
1
解决办法
962
查看次数

为什么对 C 函数的无效使用可以正常编译而没有任何警告?

与 C 相比,我更喜欢 C++,但这个简单的代码示例让我大吃一惊:

int foo() {
    return 3;
}

int main() {
    int x;
    foo(&x);
    return x;
}
Run Code Online (Sandbox Code Playgroud)

https://godbolt.org/z/4ov9nTzjM

没有警告,没有链接问题,但此代码仍然无效。

当一些初学者用具有这个奇怪问题的代码提出问题时,我偶然发现了这一点。有人在其他网站(非英语网站)上提出了问题,我想向他提供更好的解释为什么它可以编译(并了解一些有关 C 的知识)。如果有人需要的话,他的原始代码。

我怀疑这个sis在某种程度上与隐式函数声明有关,但我不完全确定。为什么编译器不会抱怨foo使用参数调用?

更新:

这是一个程序集

foo:
        push    rbp
        mov     rbp, rsp
        mov     eax, 3
        pop     rbp
        ret
main:
        push    rbp
        mov     rbp, rsp
        sub     rsp, 16
        lea     rax, [rbp-4]
        mov     rdi, rax
        mov     eax, 0
        call    foo
        mov     eax, DWORD PTR [rbp-4]
        leave
        ret
Run Code Online (Sandbox Code Playgroud)

如您所见,x仍未初始化。

c function-call function-declaration function-definition

5
推荐指数
1
解决办法
596
查看次数

如何在Powershell中的高级函数中实现@args splatting?

考虑以下简单函数:

function Write-HostIfNotVerbose()
{
    if ($VerbosePreference -eq 'SilentlyContinue')
    {
        Write-Host @args
    }
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好:

在此输入图像描述

现在我想让它成为一个高级函数,因为我希望它继承详细程度首选项:

function Write-HostIfNotVerbose([Parameter(ValueFromRemainingArguments)]$MyArgs)
{
    if ($VerbosePreference -eq 'SilentlyContinue')
    {
        Write-Host @MyArgs
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

在此输入图像描述

让我抓狂的是,我无法确定第一个示例与第二$args个示例有何不同。$args

我知道@args默认情况下本机泼溅不适用于高级功能 - https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_splatting?view=powershell-7.2#notes

但我希望可以模拟,但也行不通。我的问题是 - 我尝试模拟它的方式有什么问题,以及是否可以在不显示所有参数的Write-Host情况下修复我的代码Write-HostIfNotVerbose

powershell arguments function function-call parameter-splatting

5
推荐指数
1
解决办法
1074
查看次数

不明确的成员模板查找

这个问题的答案在以下代码中说明:

#include <vector>
using std::vector;

struct foo {
  template<typename U>
  void vector();
};

int main() {
  foo f;
  f.vector<int>(); // ambiguous!
}
Run Code Online (Sandbox Code Playgroud)

main中的最后一行是不明确的,因为编译器不仅在vector内部查找foo,而且从内部开始作为非限定名称main.所以它找到了std::vectorfoo::vector.要解决这个问题,你必须写

f.foo::vector<int>();
Run Code Online (Sandbox Code Playgroud)

我已经试过所有流行的C++编译器(这个程序g++,clang++,vc++和英特尔C++)和所有的编译器编译这个程序没有任何错误.那么,为什么他说这个程序有歧义呢?C++标准对此有何看法?

c++ function-call language-lawyer name-lookup

4
推荐指数
1
解决办法
160
查看次数