Python Ruby将数字作为键(键值)传递给**kwargs

Python Ruby将数字作为键(键值)传递给**kwargs,python,ruby,Python,Ruby,如何将数字作为键(键值)传递给**kwargs?换句话说,为什么不能将数字作为键(键值)传递给**kwargs?以下是错误: 编辑: def func(**kwargs) puts kwargs.class p kwargs end func(a={:alpha => 1, :beta => 2, :gamma => 3}) # wrong number of arguments (1 for 0) (ArgumentError) func(n = {1 => 'a

如何将数字作为键(键值)传递给**kwargs?换句话说,为什么不能将数字作为键(键值)传递给**kwargs?以下是错误:

编辑:

def func(**kwargs)
 puts kwargs.class
 p kwargs
end

func(a={:alpha => 1, :beta => 2, :gamma => 3})
# wrong number of arguments (1 for 0) (ArgumentError)
func(n = {1 => 'alpha', 2 => 'beta', 3 => 'gamma'})
在Python中,这将起作用:

def func(**kwargs):       
        print(type(kwargs).__name__)
        print(kwargs)

func(a={'alpha': 1, 'beta': 2, 'gamma': 3})
func(n = {1: 'alpha', 2: 'beta', 3: 'gamma'})

请帮忙

kwargs的意思是:KeywordArguments

在ruby的情况下,您只能传递一个符号作为键。(如果还有其他问题,请纠正我)

这样的事情是行不通的:

func("a" => "foo")
func(1 => "bar")
func(Object.new => "baz")
这些都将创建一个散列并将其作为第一个位置参数传递给函数。但是您的方法没有任何位置参数。因此出现了错误

您只能使用:

func(a: "this")
func(whatever: Object.new)

kwargs的意思是:KeywordArguments

在ruby的情况下,您只能传递一个符号作为键。(如果还有其他问题,请纠正我)

这样的事情是行不通的:

func("a" => "foo")
func(1 => "bar")
func(Object.new => "baz")
这些都将创建一个散列并将其作为第一个位置参数传递给函数。但是您的方法没有任何位置参数。因此出现了错误

您只能使用:

func(a: "this")
func(whatever: Object.new)

进一步改进:)事实上,你的答案更好。:)进一步改进:)事实上,你的答案更好。:)