for element in container:
# some code here
temp_variable = f1(element)
# more code
# much later in the code
for element in container:
# some code
another_variable = g(temp_variable)
# more code
temp_variable = f2(element)
# more code
Run Code Online (Sandbox Code Playgroud)
在第二个for循环中,我temp_variable在分配之前意外使用了变量.通常情况下,我会得到NameError异常,但不幸的是,它从前一个循环中幸存,有效并初始化.
是否有任何编码实践,IDE工具等有助于防止此类错误?
顺便说一下,我觉得如果循环内的变量不能在循环结束后存活可能会更好.
编辑
@Ignacio Vazquez-Abrams:
如果我理解正确,建议不要在多个循环中使用相同的变量名作为局部变量.我有两个问题:
通常,在多个循环中使用的最具描述性的变量名称恰好相同.说,我用过类似的东西unique_visitor_count.我不想禁止这个变量在代码中进一步使用,在另一个循环中.
在处理现有代码时,检查我之前是否已经使用过任何新的变量名称是非常繁重的.
我已经在一个应用程序上工作了几个星期,使用GoDaddy,Windows Server(我知道它很糟糕)一切似乎都好,我已经是一个PHP程序员已经有一年了,从来没有遇到过这样的事情,我有我整天都在连接mysql数据库,突然之间我收到了这个错误:
Call to undefined function mysql_connect() on Line 6
Run Code Online (Sandbox Code Playgroud)
某种类型的语法错误会导致这种情况吗?
我正在编写一个拉动XML Feed的卷曲,因为我无法使用file_get_contents,因为allow_url_fopen = off似乎无法在带有Windows服务器的godaddy上进行更改,突然间我得到了这个错误.
可能是什么导致了这个?
这是有问题的代码:
在session_start();
$ hostname ="test.com"; $ user ="root"; $ pw ="passwd";
$ connection = mysql_connect($ hostname,$ user,$ pw)或die("无法连接到db"); $ db = mysql_select_db('mydb',$ connection)或死("找不到db");
我创建了一个PHP5.ini来尝试修复allow_url_fopen并找到了可能相关的问题:在GoDaddy托管站点上更新PHP.ini
我已从服务器中删除了PHP5.ini文件,但错误仍然没有消失,可能需要一些时间?
我试图在七周内从Seven Languages解决一个简单的Ruby问题
使用just打印十六个数字的数组,一次打印四个数字的内容
each
这是我想出的,这可以通过简单的方式完成还是让它变得更好?
a = (1..16).to_a
i = 0
j = []
a.each do |item|
i += 1
j << item
if(i % 4 == 0)
p j
j = []
end
end
Run Code Online (Sandbox Code Playgroud)
它可以each_slice在一行中使用
a.each_slice(4){|x| p x}
在C#中,是否可以创建一个可以从内部派生(未密封)的类,但是然后阻止其他人在外部引用我的库继承自我的公共类(密封)?
这非常令人困惑.每当我尝试在SQL Server Management Studio Express(SQL Server 2008)中的数据库节点下添加(或甚至查看)Database Diagrams节点时,我都会收到此错误:
无法安装数据库关系图支持对象,因为此数据库没有有效的所有者.要继续,首先使用"数据库属性"对话框的"文件"页面或ALTER AUTHORIZATION语句将数据库所有者设置为有效登录,然后添加数据库关系图支持对象.
好的.问题是,根据Management Studio,我的登录名是数据库的所有者.当我登录Management Studio时,我正在使用Windows身份验证,如果我转到"数据库属性"对话框的"文件"页面,我的登录名是所有者.
接下来我想,好吧,也许我不是正确服务器角色的成员实际上是所有者,但是,我的登录是sysadmin服务器角色的成员,根据此MDSN页面是拥有的必备条件一个数据库.
所以最后我做了一些谷歌搜索,我看到人们告诉我尝试执行这样的声明:
EXEC sp_dbcmptlevel 'yourDB', '90';
go
ALTER AUTHORIZATION ON DATABASE::yourDB TO "yourLogin"
go
use [yourDB]
go
EXECUTE AS USER = N'dbo' REVERT
go
Run Code Online (Sandbox Code Playgroud)
我的问题在于我并不真正理解这段代码在做什么,并且使用上述语句(看起来成功执行)尝试不同的用户名或数据库名称似乎无法解决我的问题.
谁能想到我可能会遗失的任何事情?
在很长一段时间内第一次使用Windows并且已经选择了notepad ++并使用nppexec插件来运行python脚本.但是,我注意到notepad ++没有选择保存我的脚本的目录.例如,我将"script.py"放在"我的文档"中,但os.getcwd()打印"Program Files\Notepad ++"
有谁知道如何改变这种行为?在Mac上并不完全习惯它.
在各种C代码中,我看到如下定义的常量:
#define T 100
Run Code Online (Sandbox Code Playgroud)
而在C++示例中,它几乎总是:
const int T = 100;
Run Code Online (Sandbox Code Playgroud)
据我所知,在第一种情况下,预处理器将用100替换T的每个实例.在第二个例子中,T实际上存储在内存中.
在C++中#define常量被认为是不好的编程习惯吗?
Django makemessage可以生成i18n文件,并使其更容易翻译.
正如我所见,龙卷风支持CSV格式和gettext格式,但我只能使用CSV版本,因为我会在appengine中使用它.
所以,我正在寻找一种基于扫描我的代码和模板为龙卷风生成这些CSV文件的方法.
我对python很新,碰巧现在已经使用过C#了.我看到有一个与集合一起使用的过滤器方法,它似乎相当于LINQ的where子句.
我想知道,在python中是否还有LINQ的select语句?
示例:my_collection.select(my_object => my_object.my_property)将返回my_collection中每个对象的my_property的集合.
我正在使用heroku,这样做,我正在经历我的第一次进入postgresql.也许我在开发过程中从未遇到它,但我无法将条目保存到我的数据库中超过255个字符.有没有解决的办法?目前我只是使用字符串来存储消息数据.
其次,如果确实有一种存储超过255个字符的方法,是否有一种很好的方法可以使用迁移将我的消息字符串转换为此形式?我的应用程序目前正在使用中.
谢谢!
python ×4
.net ×1
arrays ×1
c# ×1
c++ ×1
coding-style ×1
csv ×1
database ×1
each ×1
heroku ×1
localization ×1
mysql ×1
namespaces ×1
notepad++ ×1
nppexec ×1
php ×1
postgresql ×1
ruby ×1
sql ×1
tornado ×1