有时,使用默认参数(即空列表)似乎很自然.然而,Python在这些情况下会出现意外行为.
例如,我有一个功能:
def my_func(working_list = []):
working_list.append("a")
print(working_list)
Run Code Online (Sandbox Code Playgroud)
第一次使用默认值调用它将起作用,但之后的调用将使用不断更新的列表.
那么,获得我想要的行为的pythonic方法是什么(每个调用都有一个新的列表)?
我需要为我的程序使用列表,并需要决定是否使用std :: vector或std :: list.向量的问题在于没有删除方法,并且列表中没有运算符[].所以我决定编写自己的类来扩展std :: list并重载[]运算符.
我的代码看起来像这样:
#include <list>
template <class T >
class myList : public std::list<T>
{
public:
T operator[](int index);
T operator[](int & index);
myList(void);
~myList(void);
};
#include "myList.h"
template<class T>
myList<T>::myList(void): std::list<T>() {}
template<class T>
myList<T>::~myList(void)
{
std::list<T>::~list();
}
template<class T>
T myList<T>::operator[](int index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count != index)itr++;
return *itr;
}
template<class T>
T myList<T>::operator[](int & index) {
int count = 0;
std::list<T>::iterator itr = this->begin();
while(count …
Run Code Online (Sandbox Code Playgroud) 我已经对AppleScript进行了一些深入研究,但我对制作半有用的Mac应用程序需要多长时间和多长时间感兴趣.
除Apple文档之外还有哪些非常好的资源
我最近使用Visual Studio和WinDbg对托管应用程序进行了相当多的调试,因此我经常要求协助同事调试情况.有几次我发现人们只是在这里和那里插入断点并希望最好.根据我的经验,这很少是一种有用的技术.
我的方法就是这样的.
重现问题.理想情况下尽可能减少输入.
检查出了什么问题,并列出了可能出现错误的理论.
通过调试代码的特定区域,一次检查一个理论.
根据需要重复步骤.
对于复杂的调试问题,我经常与同事一起工作.对于WinDbg,这特别有用.
调试的任何其他有用的提示或最佳实践?
很多时候,在互联网上的代码或我的同事的代码中,我看到他们只用一种方法创建一个Object,只在整个应用程序中使用一次.像这样:
class iOnlyHaveOneMethod{
public function theOneMethod(){
//loads and loads of code, say 100's of lines
// but it only gets used once in the whole application
}
}
if($foo){
$bar = new iOnlyHaveOneMEthod;
$bar->theOneMethod();
}
Run Code Online (Sandbox Code Playgroud)
那真的好了吗:
if($foo){
//loads and loads of code which only gets used here and nowhere else
}
Run Code Online (Sandbox Code Playgroud)
?
为了便于阅读,将代码的负载和负载移开是有意义的,但它不应该只是在函数中吗?
function loadsAndLoadsOfCode(){
//Loads and loads of code
}
if($foo){ loadsAndLoadsOfCode(); }
Run Code Online (Sandbox Code Playgroud)
将代码移动到新对象真的更好,然后只是创建一个函数或直接将代码放在那里?
对我来说,函数部分更有意义,似乎更容易阅读,然后创建一个几乎没有任何用处的对象,因为它只包含一个方法.
了解windbg的功能和优点的最佳资源是什么?我希望能够讨论调查内存问题(句柄,对象),性能问题等...
我让用户在我的Flex3(Flash 10)应用程序中输入一些代码,我想做语法高亮显示.
有没有可以帮助我的开源库?
我需要一个Lua语法支持,但如果库有一个合理的接口来执行此操作,我可以自己添加它.
如何从存储在文件中的进程列表中运行第一个进程并立即删除第一行,就好像该文件是一个队列并且我调用了“pop”一样?
我想以类似流行的方式调用简单文本文件中列出的第一个命令,并使用 \n 作为分隔符:
图1:
cmdqueue.lst :
proc_C1
proc_C2
proc_C3
.
.
Run Code Online (Sandbox Code Playgroud)
图2:
通过以下方式弹出第一个命令popcmd
:
proc_A | proc_B | popcmd cmdqueue.lst | proc_D
Run Code Online (Sandbox Code Playgroud)
图3:
cmdqueue.lst :
proc_C2
proc_C3
proc_C4
.
.
Run Code Online (Sandbox Code Playgroud) 我目前正在阅读David Golding的"Beginning CakePHP:从新手到专业".有一次我必须使用CLI命令"蛋糕烘焙",我得到欢迎屏幕,但当我尝试烘烤例如控制器时,我收到以下错误消息:
Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 117
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 122
Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 130
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/blog/cake/libs/model/datasources/dbo/dbo_mysql.php on line 154
Error: Your database does not have any tables.
Run Code Online (Sandbox Code Playgroud)
我怀疑错误消息与php试图访问错误的mysql-socket,即默认的osx mysql-socket - 而不是MAMP使用的错误消息有关.因此,我更改了我的数据库配置以连接到UNIX mysql-socket(:/Applications/MAMP/tmp/mysql/mysql.sock):
class DATABASE_CONFIG …
Run Code Online (Sandbox Code Playgroud) 我使用codeigniter作为主域上的主要安装.我创建了一个子域名和一个名为live的文件夹,例如live.domain.com映射到public/live.但是在公开场合我使用codeigniter.
我现在有动态codeigniter网址:
http://domain.com/api/
我要映射到我的子域名:
https://live.domain.com
所以去:
https://live.domain.com/api/functioname
将使用脚本:
http://domain.com/api/apifunctioname
可能:
http://domain.com/api/apifunctioname/parameter1/parameter
一切都在同一台服务器上,因此不需要重定向.
任何人都有关于使用哪些重写规则的想法?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^live\.domain\.com [NC]
RewriteRule (.+)$ "http://domain.com/api/$1" [L]
Run Code Online (Sandbox Code Playgroud)
以上工作非常适合重写,但重定向到http://domain.com/api/functionname而不是我希望它路由; 所以当去:
https://live.domain.com/api/functioname
它保留在该URL但使用的脚本
http://domain.com/api/functionname
非常感谢你,
冰