根据http://www.faqs.org/docs/diveintopython/fileinfo_private.html : 像大多数语言一样,Python具有私有元素的概念: 私有函数,不能从模块外调用 但是,如果我定义了两个文件: #a.py __num=1 和: #b.py import a print a.__num 当我运行b.py它打印出1没有任何例外。 diveintopython错了,还是我误解了一些东西? 有没有办法做一个模块的function定义为私人?
没有多less人知道这个特性,但是Python的函数(和方法)可以有属性 。 看吧: >>> def foo(x): … pass … >>> foo.score = 10 >>> dir(foo) ['__call__', '__class__', '__delattr__', '__dict__', '__doc__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name', 'score'] >>> foo.score 10 >>> foo.score += 1 >>> foo.score 11 Python中这个特性有什么可能的用法和滥用? 我知道一个很好的用法是PLY使用docstring将语法规则与方法相关联。 但是,自定义属性呢? 有没有很好的理由使用它们?
可能重复: C ++虚拟/纯虚拟解释 纯虚函数和虚函数有什么区别? 我知道“纯粹的虚拟function是一个虚拟的function,没有身体”,但这是什么意思,实际上是由下面的行: virtual void virtualfunctioname() = 0
我正在尝试使用QUADPACK例程来执行数值积分。 例程期望函数作为REAL,EXTERNAL传递,所以我没有使用指针或其他任何东西的自由。 是否有可能将函数f(x,a,b,…)作为f(x)的函数来用于仅期望函数x的函数? 就像使用@(x)f(x,a,b,…)在MATLAB完成的一样。
我是一个PHP新手,所以我有一个小问题的function。 我有这样的代码行: <?php $ime=$_POST["ime"]; $prezime=$_POST["prezime"]; $pera="string"; if (empty($ime)||empty($prezime)){ echo "Ne radi, vrati se nazad i unesi nesto!"; } function provera($prom){ if (preg_match("/[0-9\,\.\?\>\.<\"\'\:\;\[\]\}\{\/\!\\\@\#\$\%\^\&\*\(\)\-\_\=\+\`[:space:]]/",$prom)){ echo "Nepravilan unos imena ili prezimina!"; echo $pera; } } provera($ime); provera($prezime); ?> 无论如何,当我尝试这个代码时,我总是会得到一个错误信息,说明第11行(粗体部分代码)有错误,并且没有variables被回显。 我猜测它给了我这个错误,因为我的variables没有在该函数内部定义,但我需要在函数外定义它,所以有办法做到这一点?
我们写了一个函数get_timestamp()定义为 CREATE OR REPLACE FUNCTION get_timestamp() RETURNS integer AS $$ SELECT (FLOOR(EXTRACT(EPOCH FROM clock_timestamp()) * 10) – 13885344000)::int; $$ LANGUAGE SQL; 这用于INSERT和UPDATE在数据库logging的创build和修改字段中input或编辑一个值。 但是,我们发现当连续添加或更新logging时,它将返回相同的值。 在检查pgAdmin III中的函数时,我们注意到在运行SQL来构build函数时,在LANGUAGE SQL语句之后注入了关键字IMMUTABLE。 该文档指出,默认是VOLATILE(如果没有这些出现,VOLATILE是默认假设),所以我不知道为什么注入IMMUTABLE,但是,将其更改为STABLE已解决重复值的问题。 注: 正如在接受的答案中所述,IMMUTABLE不会被pgAdmin或Postgres添加到函数中,而且必须在开发过程中添加。 我猜测发生了什么是这个函数正在被评估和结果被caching优化,因为它被标记为IMMUTABLE指示Postgres引擎返回值不应该改变给定相同(空)参数列表。 但是,如果不在触发器中使用,则直接在INSERT语句中使用时,函数将在返回相同的值之前返回一个不同的值FIVE次。 这是由于一些优化algorithm,如“如果一个IMMUTABLE函数在会话中多使用5次,caching未来调用结果”? 任何关于如何在Postgres函数中使用这些关键字的澄清,将不胜感激。 对于我们来说,STABLE是正确的select,因为我们在触发器中使用了这个函数,或者还有更多要考虑的地方,例如文档说: (对于希望查询由当前命令修改的行的AFTER触发器是不合适的。) 但我为什么不清楚。
echo $path; //working function createList($retval) { echo $path; //not working print "<form method='POST' action='' enctype='multipart/form-data'>"; foreach ($retval as $value) { print "<input type='checkbox' name='deletefiles[]' id='$value' value='$value'>$value<br>"; } print "<input class='submit' name='deleteBtn' type='submit' value='Datei(en) löschen'>"; print "</form>"; } 我究竟做错了什么? 为什么$ path在createList函数之外正确打印,但是在函数内部不可访问?
“打电话”是什么意思? 你将如何在Python中“调用”一个函数?
对不起,我是一个初学者,我不能确定这是一个多么好的问题,也许这听起来很明显,你们中的一些人。 如果我们下面这两个用法是一样的哪个更好? function doSomething ($var1,$var2,..){ … } 要么 function doSomething (){ global $var1,$var2,..; … } 通过我们的使用,我的意思是我知道在第二种情况下,我们也可以改变全局variables的价值。 但是如果我们不需要这样做,这是写这个函数的更好方法呢? 传递variables的内存less于宣布全局函数吗?
我无法理解以下行为:一个头部带有一些基本types,另一个头部使用这些types的几个函数。 之后,我开始根据自己定义的types和function构build类。 在函数头中,如果我留下以下签名: void whateverFunction(parameters) 链接器指出有任何函数有多个定义。 现在,如果将其更改为: inline void whateverFunction(parameters) 联动问题消失了,所有的编译链接都很好。 我所知道的内联就是用它的代码代替了每个函数调用,而不是它是非常黑暗的,所以我的问题是: 链接器如何处理C ++中的内联函数?