天道酬勤,学无止境

function

Why is a function call called a "function call"?

问题 我知道函数调用是什么。 我知道它的作用。 我已经调试了很多。 对于为什么使用“函数调用”这个术语是有意义的,我确实有一些直观的感觉,但是归根结底,我无法像使用return语句那样正确地解释这一点。 例如,使用return语句,答案是:它被称为“return”,因为您返回到您来自的地方。 您返回到调用函数的行。 因此,为什么函数的结尾(隐式或显式)返回是有道理的。 我注意到,对于以英语为母语的人来说,这更容易掌握(尤其是对于诸如“缓存”之类的更晦涩的词)。 然而,对于像我这样的人(荷兰人,通过电子游戏和字幕电视学习英语),这很难掌握。 我用谷歌搜索了这个问题,但我得到了各种各样的条目什么是函数调用以及它是如何工作的。 我经常将“呼叫”这个词与电话联系在一起,因为这就是我在英语中主要使用它的目的。 我在这里问了一个类似的问题,关于“dereference”一词中的“de-”是什么意思:dereference 中的 de- 前缀是什么意思? 有语言解释吗? 回答1 通话一词具有广泛的含义。 当用于调用函数时,您可能最好将其解释为调用函数以执行的缩写。 请参阅免费词典给出的以下含义: 命令或要求进行特定的活动或工作; 召唤: 她被要求担任陪审员。 他被召唤为祭司。 这与用于调用函数的另一个表达式的含义非常接近:调用函数。 这在函数的上下文中应该是有意义的。 该函数提供服务

2022-07-11 09:56:20    分类:技术分享    function

How to use decltype with member functions

问题 我正在尝试在 Visual Studio 2012 的成员函数上使用 decltype。我偶然发现了一个特性,我想知道这是有意还是编译器错误。 考虑(只是一个代码片段,无意表明我的观点): struct Test { int f() {return 0;} } T; std::integral_constant<decltype(T.f()), 5>; std::integral_constant<decltype(&Test::f), 5>; // error C2440 当第二行编译时,第三行给出错误 C2440: 'specialization' : cannot convert from 'int' to 'int (__thiscall Test::*)(void)' 对函数的实例化调用中的 decltype 如何产生其返回类型(这是我所期望的),但是在不涉及任何成员的情况下尝试做同样的事情会产生成员函数指针? 如果这是预期的行为,其背后的原因是什么? 我如何表示我正在请求成员函数的返回类型,而实际上手头没有实例? 当然我可以用肮脏的方式来做: std::integral_constant<decltype(((Test*)nullptr)->f()), 5>; 但毫无疑问,这很漂亮,很丑陋,应该有一种干净、直接的 C++ 方式来表达这一点。 回答1 &Test

2022-07-11 09:45:00    分类:技术分享    c++   function   instance   member   decltype

getting string between 2 characters in python

问题 我需要将某些单词从字符串中提取为新格式。 例如,我使用输入调用函数: text2function('$sin (x)$ is an function of x') 我需要将它们放入 StringFunction: StringFunction(function, independent_variables=[vari]) 我只需要为函数获取“sin (x)”,为 vari 获取“x”。 所以它最终看起来像这样: StringFunction('sin (x)', independent_variables=['x'] 问题是,我似乎无法获得函数和变量。 我努力了: start = string.index(start_marker) + len(start_marker) end = string.index(end_marker, start) return string[start:end] 和 r = re.compile('$()$') m = r.search(string) if m: lyrics = m.group(1) 和 send = re.findall('$([^"]*)$',string) 一切似乎都没有给我任何东西。 难道我做错了什么? 感谢所有帮助。 谢谢。 回答1 >>> char1 = '(' >>> char2 = ')' >>>

2022-07-11 09:33:57    分类:技术分享    python   string   function   character   extraction

Nodejs calling function from within a function

问题 我有 3 种方法 exports.getImageById = function (resultFn, id) { ... } exports.getCollectionById = function (resultFn, id) { } 在第三种方法中,我想同时调用这两种方法 exports.getCollectionImages = function (resultFn, collectionId) { var arr = new Array(); this.getCollectionById( // fine, 1st call function (result) { var images = result.image; for (i = 0; i < images.length; i++) { this.getImageById(function (result1) { // error, 2nd call arr[i] = result1; }, images[i] ); } } , collectionId ); resultFn(arr); } 我可以调用第一个函数this.getCollectionById但它无法调用this.getImageById ,它说未定义函数,这是什么原因? 回答1 当您调用this.getCollectionById向它传递回调时

2022-07-11 09:33:09    分类:技术分享    javascript   node.js   function

Numpy, apply a list of functions along array dimension

问题 我有一个类型的函数列表: func_list = [lambda x: function1(input), lambda x: function2(input), lambda x: function3(input), lambda x: x] 和一个形状为 [4, 200, 200, 1] 的数组(一批图像)。 我想沿第 0 轴按顺序应用函数列表。 编辑:改写问题。 这相当于上面的。 说,而不是数组,我有一个由 4 个相同数组组成的元组,形状为 (200, 200, 1),我想在第一个元素上应用 function1,在第二个元素上应用 function2,等等。这可以做到吗?一个for循环? 回答1 您可以使用np.apply_along_axis遍历您的函数列表: import numpy as np x = np.ranom.randn(100, 100) for f in fun_list: x = np.apply_along_axis(f, 0, x) 基于OP的更新 假设您的函数和批次的大小相同: batch = ... # tuple of 4 images batch_out = tuple([np.apply_along_axis(f, 0, x) for f, x in zip(fun_list, batch)]) 回答2 我尝试了@Coldspeed

2022-05-17 04:57:04    分类:技术分享    python   arrays   function   numpy

Reminder codings in Watson Conversation Service

问题 我正在使用 watson 对话服务制作食品有效期聊天机器人。 因此,当特定食物到期日临近时,主要功能会发出警报,这意味着我必须保存食物和食物的预期持续天数。 (例如,牛奶 - 14 天,或鸡蛋 - 7 天) 这是有人用我之前提出的问题为我回答的代码。 function updateMessage(input, data, req, res) { if (data.context.verifiedDate){ searchRequest(data, req, res); } else if (data.output && data.output.text) { return res.json(data); } return data; } function searchRequest(data, req, res){ // something to do and return value var sendRequest = "Thanks for wait, the request is" + valueRequest; data.output.text[0] = sendRequest; return data; } *Date.prototype.addDays = function(days) { var dat = new Date(this.valueOf())

2022-05-17 03:37:17    分类:技术分享    javascript   function   variables   watson-conversation

Python: How can a closure continue its existence after the outer function is reassigned?

问题 我学习了 Python 中的闭包,并且我很好地理解了这个概念。 在 IDLE 中乱搞时,我想如果我重新分配封闭函数然后尝试调用封闭函数会发生什么: >>> def outer_function(hello): message = hello def inner_function(): print(message) return inner_function >>> function = outer_function("hello") >>> function() hello >>> def outer_function(): print("hi") >>> function() hello 我认为这很有趣,但是我意识到我对内存中的闭包等发生的情况没有足够好的理解。有人可以解释一下在重新分配inner_function后如何调用outer_function吗? 回答1 在 CPython(即用 C 编写的参考实现,大多数人认为只是“Python”)中,词法闭包被实现为“平面闭包”(参见 PEP 227),它使用单元对象引用而不是搜索框架对象的链接列表(嵌套范围)在运行时。 这允许在返回闭包函数时快速查找并改进垃圾收集。 outer_function中的字节码专门用于访问堆栈帧中的单元对象,而不是直接引用message对象。 解释器在为调用设置堆栈帧时知道这一点

2022-05-16 23:40:08    分类:技术分享    python   function   memory   closures

Shade area between two lines defined with function in ggplot [duplicate]

问题 这个问题在这里已经有了答案: 用 ggplot 填充 R 中两条黄土平滑线之间的区域2 个答案 4年前关闭。 我试图找到如何在 ggplot 中对由函数定义的两行之间的区域进行着色的可能性。 我找到了一些使用 geom_area 或 geom_ribbon 的解决方案,但在这两种情况下,您都需要一个定义 ymin 和 ymax 的数据库。 还有其他可能吗? ymin 和 ymax 的定义方式也与线条相同? 这是我的示例: myplot <- ggplot(data.frame(x=c(0, 100)), aes(x=x)) + stat_function(fun= function(x)20*sqrt(x), geom="line", colour= "black", size= 1) + stat_function(fun= function(x)50*sqrt(x), geom="line", colour= "black", size= 1) myplot 提前谢谢你的帮助。 回答1 尝试将函数放入提供图形的数据框中。 然后可以使用geom_ribbon填充两个函数之间的区域。 mydata = data.frame(x=c(0:100), func1 = sapply(mydata$x, FUN = function(x){20*sqrt(x)}), func2 =

2022-05-16 22:11:14    分类:技术分享    r   function   ggplot2   fill   between

Join multiple rows into one column using a function in Oracle with 3 related tables

问题 我知道关于同一个问题有多个问题,但我找不到可以解决我的问题的问题。 我也知道这篇文章,这正是我用于下面代码的内容。 我只是有一个小问题... 表_a: a_id a_name 1 aaa 2 bbb 3 ccc 表_b: b_id b_name 1 ddd 2 eee 3 fff 表_c a_id b_id 1 2 1 3 2 1 3 1 3 2 3 3 我有上面的表,我需要一个 SELECT 语句来完成这个: a_name list_of_b_name aaa eee,fff bbb ddd ccc ddd,eee,fff 也许我可以使用一些 Oracle 函数来简化该过程,例如 WM_CONCAT(尚未尝试过),但我需要使用 FUNCTION,这是我在查看上面链接的文章后的尝试: CREATE OR REPLACE FUNCTION f_test(id IN table_c.a_id % TYPE) RETURN VARCHAR2 IS l_text VARCHAR2(32767) := NULL; BEGIN FOR cur_rec IN (SELECT b_id FROM table_c WHERE a_id = id) LOOP l_text := l_text || ',' || cur_rec.b_id; END LOOP; RETURN LTRIM(l

2022-05-16 20:08:07    分类:技术分享    sql   oracle   function   string   plsql

EXECUTE syntax error in postgresql

问题 我想使用执行执行以下查询,它与 select 完美配合,但是当我在触发器中调用它时,我收到此错误“错误:查询没有结果数据的目的地”。 我尝试过执行,但它不起作用。 select 中的函数在表中插入行。 select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code) FROM "student" as s where find_st(s.grade)>=5; 所以我想到了 EXECUTE 但我得到了语法错误。 这是我的尝试: execute 'insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code) FROM "student" as s where find_st(s.grade)>=5'; 有人可以告诉我我做错了什么吗? 或者还有其他想法可以使查询在触发器函数中工作吗? 提前致谢.. 这是触发器: CREATE OR REPLACE FUNCTION insert_d() RETURNS TRIGGER AS $$ BEGIN select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2)

2022-05-16 19:29:21    分类:技术分享    sql   postgresql   function   triggers