Они абсолютно одинаковы и, следовательно, занимают одинаковое количество времени. not in
это просто синтаксический сахар. Используя модуль dis
, мы можем видеть, что оба результата приводят к одному и тому же байт-коду:
>>> dis.dis("not x in y")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
>>> dis.dis("x not in y")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
Даже добавление скобок в качестве not (x in y)
не меняет этого, если, конечно, вы не добавите больше в скобки :
>>> dis.dis("not (x in y)")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 7 (not in)
6 RETURN_VALUE
>>> dis.dis("not (x in y or z)")
1 0 LOAD_NAME 0 (x)
2 LOAD_NAME 1 (y)
4 COMPARE_OP 6 (in)
6 JUMP_IF_TRUE_OR_POP 10
8 LOAD_NAME 2 (z)
>> 10 UNARY_NOT
12 RETURN_VALUE
Протестировано с Python 3.6.7 и 2.7.15.
Я думаю, вы можете прочитать это из методов статического класса FormsAuthentication, что было бы лучше, чем делать это, читая файл web.config напрямую, поскольку вы можете наследовать настройки аутентификации из сети более высокого уровня. config.
var authTicket = new FormsAuthenticationTicket(user.EmailAddress, true, (int)FormsAuthentication.Timeout.TotalMinutes);
Configuration conn = WebConfigurationManager.OpenWebConfiguration("");
AuthenticationSection section = (AuthenticationSection)conn.SectionGroups.Get("system.web").Sections.Get("authentication");
long cookieExpires = System.Convert.ToInt64(section.Forms.Timeout.TotalMinutes);