! является логическим оператором NOT, это логический оператор, который будет инвертировать что-то противоположное.
Хотя вы можете обойти круглые скобки вызываемой функции, используя функцию BANG (!) перед функцией, она все равно инвертирует возврат, который может быть не таким, каким вы хотели. Как и в случае с IEFE, он возвращает undefined , который при инвертировании становится логическим значением true.
Вместо этого используйте закрывающую скобку и BANG (!) если нужно.
blockquote>// I'm going to leave the closing () in all examples as invoking the function with just ! and () takes away from what's happening. (function(){ return false; }()); => false !(function(){ return false; }()); => true !!(function(){ return false; }()); => false !!!(function(){ return false; }()); => true
Другие операторы, которые работают ...
blockquote>+(function(){ return false; }()); => 0 -(function(){ return false; }()); => -0 ~(function(){ return false; }()); => -1
Комбинированные операторы ...
blockquote>+!(function(){ return false; }()); => 1 -!(function(){ return false; }()); => -1 !+(function(){ return false; }()); => true !-(function(){ return false; }()); => true ~!(function(){ return false; }()); => -2 ~!!(function(){ return false; }()); => -1 +~(function(){ return false; }()); +> -1
def merger(dic_a, dic_b):
dic_merged = {}
for i in dic_a:
if i in dic_b:
dic_merged[i] = [dic_a[i]] + [dic_b[i]]
else:
dic_merged[i] = dic_a[i]
for i in dic_b:
if i not in dic_a:
dic_merged[i] = dic_b[i]
return (dic_merged)
merger(dic_a, dic_b)