В течение определенного времени повторение - например, выключение компьютеров - это определенное время каждый день. используйте cron.
crontab -e
добавьте следующее:
15 14 1 * * pmi action suspend
Если вы хотите настроить его.
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
Для одноразовой работы нам команда
Например, если вы хотите спящий режим за 30 минут:
echo 'pmi action hibernate' | at now + 30 min
Или если вы хотите приостановить работу в 11:00 вечера:
echo 'pmi action suspend' | at 11pm
Другой способ справиться с Python 2.x:
def foo(*args, **kwargs):
if < kwarg-name > not in kwargs.keys():
kwargs[< kwarg-name >] = < kwarg-name-default-value >
return bar(*args, **kwargs)
Это обрабатывает передачу произвольного *args базовому вызову в отличие от ответа @ nneonneo.
Вы также можете использовать декоратор, подобный этому:
import functools
def default_kwargs(**defaultKwargs):
def actual_decorator(fn):
@functools.wraps(fn)
def g(*args, **kwargs):
defaultKwargs.update(kwargs)
return fn(*args, **defaultKwargs)
return g
return actual_decorator
Затем просто выполните:
@default_kwargs(defaultVar1 = defaultValue 1, ...)
def foo(*args, **kwargs):
# Anything in here
Например:
@default_kwargs(a=1)
def f(*args, **kwargs):
print(kwargs['a']+ 1)
f() # Returns 2
f(3) # Returns 4
Синтаксис в другом вопросе - только python3.x и указывает только аргументы ключевого слова. Это не работает на python2.x.
Для python2.x я бы pop из kwargs:
def func(arg1, arg2, *args, **kwargs):
opt_arg = kwargs.pop('opt_arg', 'def_val')
Приближаясь к вашему решению, пытаясь сделать его более общим и более компактным, я бы предложил рассмотреть примерно следующее:
>>> def func(arg1, arg2, *args, **kwargs):
... kwargs_with_defaults = dict({'opt_arg': 'def_val', 'opt_arg2': 'default2'}, **kwargs)
... #...
... return arg1, arg2, args, kwargs_with_defaults
>>> func('a1', 'a2', 'a3', 'a5', x='foo', y='bar')
('a1', 'a2', ('a3', 'a5'), {'opt_arg2': 'default2', 'opt_arg': 'def_val', 'y': 'bar', 'x': 'foo'})
>>> func('a1', 'a2', 'a3', 'a5', opt_arg='explicit_value', x='foo', y='bar')
('a1', 'a2', ('a3', 'a5'), {'opt_arg2': 'default2', 'opt_arg': 'explicit_value', 'y': 'bar', 'x': 'foo'})