В iOS 9 я использую:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool
{
FBSDKApplicationDelegate.sharedInstance().application(app, openURL: url, sourceApplication: options["UIApplicationOpenURLOptionsSourceApplicationKey"] as! String, annotation: options["UIApplicationOpenURLOptionsAnnotationKey"])
return true
}
Да.
Это просто и работает, если вы игнорируете аргументы ключевого слова:
def manyArgs(*arg):
print "I was called with", len(arg), "arguments:", arg
>>> manyArgs(1)
I was called with 1 arguments: (1,)
>>> manyArgs(1, 2, 3)
I was called with 3 arguments: (1, 2, 3)
Как видите, Python выдаст вам единственный кортеж со всеми аргументами.
Для аргументы ключевого слова, которые необходимо принять как отдельный фактический аргумент, как показано в ответе Скурмеделя .
Добавление для раскрутки сообщения:
Вы также можете отправить несколько аргументов ключ-значение.
def myfunc(**kwargs):
# kwargs is a dictionary.
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc(abc=123, efh=456)
# abc = 123
# efh = 456
И вы можете смешать два:
def myfunc2(*args, **kwargs):
for a in args:
print a
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc2(1, 2, 3, banan=123)
# 1
# 2
# 3
# banan = 123
Они должны быть объявлены и вызваны в этом порядок, то есть сигнатура функции должна быть * args, ** kwargs и вызываться в этом порядке.