В мире python3.x вы, вероятно, должны использовать объект Signature
:
import inspect
def get_default_args(func):
signature = inspect.signature(func)
return {
k: v.default
for k, v in signature.parameters.items()
if v.default is not inspect.Parameter.empty
}
Аргументы / значения по умолчанию могут быть объединены как:
import inspect
a = inspect.getargspec(eat_dog)
zip(a.args[-len(a.defaults):],a.defaults)
Здесь a.args[-len(a.defaults):]
- аргументы со значениями по умолчанию и, очевидно, a.defaults
- соответствующие значения по умолчанию .
Вы даже можете передать вывод zip
в конструктор dict
и создать сопоставление, подходящее для распаковки ключевых слов.
глядя на документы, это решение будет работать только на python2.6 или новее, так как я предполагаю, что inspect.getargspec
возвращает с именем tuple . Более ранние версии вернули регулярный кортеж , но было бы очень легко модифицировать соответствующим образом. Вот версия, которая работает со старыми (и более новыми) версиями:
import inspect
def get_default_args(func):
"""
returns a dictionary of arg_name:default_values for the input function
"""
args, varargs, keywords, defaults = inspect.getargspec(func)
return dict(zip(args[-len(defaults):], defaults))
Подумайте об этом:
return dict(zip(reversed(args), reversed(defaults)))
также будет работать и может быть более интуитивным для некоторых людей .
Можете ли вы попробовать это один раз.
var previousOrientation = window.orientation;
var checkOrientation = function(){
if(window.orientation !== previousOrientation){
previousOrientation = window.orientation;
// orientation changed, do your magic here
}
};
window.addEventListener("resize", checkOrientation, false);
window.addEventListener("orientationchange", checkOrientation, false);
// (optional) Android doesn't always fire orientationChange on 180 degree turns
setInterval(checkOrientation, 2000);