Я использовал их в качестве статических переменных для функции. Например, учитывая следующий код C:
int fn(int i)
{
static f = 1;
f += i;
return f;
}
я могу реализовать функцию так же в Python:
def fn(i):
fn.f += i
return fn.f
fn.f = 1
Это определенно попало бы в конец "злоупотреблений" спектра.
Чтобы получить контроль на желаемом уровне, вам, вероятно, следует исследовать один каталог за раз, а не все дерево. Следующий метод заполняет данный IList
всеми файлами, найденными в дереве каталогов, кроме тех, к которым у пользователя нет доступа:
// using System.Linq
private static void AddFiles(string path, IList<string> files)
{
try
{
Directory.GetFiles(path)
.ToList()
.ForEach(s => files.Add(s));
Directory.GetDirectories(path)
.ToList()
.ForEach(s => AddFiles(s, files));
}
catch (UnauthorizedAccessException ex)
{
// ok, so we are not allowed to dig into that directory. Move on.
}
}
В .NET 4 это стало намного проще, см. http://msdn.microsoft.com/en-us/library/dd997370 .aspx