Ранее принятый ответ был устаревшим с Python 3.0
. Вместо использования inspect.getargspec
вы должны выбрать класс Signature
, который заменит его.
Создание подписи для функции выполняется с помощью функции signature
:
from inspect import signature
def someMethod(self, arg1, kwarg1=None):
pass
sig = signature(someMethod)
Теперь вы можете быстро просмотреть ее параметры с помощью str
:
str(sig) # returns: '(self, arg1, kwarg1=None)'
или вы также можете получить сопоставление имен атрибутов с объектами параметров через sig.parameters
.
params = sig.parameters
print(params['kwarg1']) # prints: kwarg1=20
Кроме того, вы можете вызвать len
на sig.parameters
, чтобы увидеть количество аргументов, которые эта функция требует:
print(len(params)) # 3
Каждая запись в params
На самом деле отображение - это объект Parameter
, который имеет дополнительные атрибуты, облегчающие вашу жизнь. Например, захват параметра и просмотр его значения по умолчанию теперь легко выполняется с помощью:
kwarg1 = params['kwarg1']
kwarg1.default # returns: None
аналогично для остальных объектов, содержащихся в parameters
.
Что касается пользователей Python 2.x
, в то время как inspect.getargspec
не устарел , язык скоро будет :-). Класс Signature
недоступен в серии 2.x
и не будет. Поэтому вам еще нужно работать с inspect.getargspec
.
Что касается перехода между Python 2 и 3, если у вас есть код, который полагается на интерфейс getargspec
в Python 2 и переключиться на signature
в 3
слишком сложно, у вас есть ценная опция использования inspect.getfullargspec
. Он предлагает аналогичный интерфейс getargspec
(один вызываемый аргумент), чтобы захватить аргументы функции, а также обрабатывать некоторые дополнительные случаи, которые getargspec
не выполняет:
from inspect import getfullargspec
def someMethod(self, arg1, kwarg1=None):
pass
args = getfullargspec(someMethod)
Как и в случае с getargspec
, getfullargspec
возвращает NamedTuple
, который содержит аргументы.
print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})
Если вы знаете, что коммит, к которому вы хотите вернуться, является заголовком какой-либо ветки или помечен тегами, то вы можете просто
git checkout branchname
Вы также можете использовать git reflog
, чтобы узнать, что еще коммитит вашу HEAD. (или любой другой источник) указывал в прошлом.
Отредактировано для добавления:
В новых версиях Git, если вы запускали только git checkout
или что-то еще, чтобы переместить HEAD
один раз, вы также можете сделать
git checkout -
чтобы вернуться туда, где он был до последней проверки. Это было мотивировано аналогией с идиомой оболочки cd -
, чтобы вернуться в тот рабочий каталог, в котором вы находились ранее.
Посмотрите на графический интерфейс ... gitk
показывает все коммиты. Иногда проще работать с графикой ... ^^