在Python中,这两个例子做了同样的事情:
from tkinter import Label
widget = Label(None, text='Hello')
widget.pack()
widget.mainloop()
from tkinter import Label
widget = Label(None,'Hello')
widget.pack()
widget.mainloop()
Run Code Online (Sandbox Code Playgroud)
我认为Label是一个类,当我尝试创建该类的实例时,我总是做与上一个代码示例相同的事情.我觉得这个意思很奇怪text='Hello'.有人可以告诉我这件事吗?
Ash*_*ary 43
text='Hello'表示您将值显式传递'Hello'给函数参数中的关键字 text参数.
Label(None,'Hello')means 'Hello'被传递给函数定义中的第二个位置参数(无论该变量的名称是什么)
>>> def func(first, second):
... print first, second
...
>>> func('foo', 'text')
foo text
>>> func('foo', second = 'text')
foo text
Run Code Online (Sandbox Code Playgroud)
使用关键字参数调用的顺序无关紧要,但所有关键字参数必须在位置参数之后.
>>> def func(first, second, third):
print first, second, third
...
>>> func('foo', third = 'spam', second = 'bar')
foo bar spam
Run Code Online (Sandbox Code Playgroud)
这里first获得的价值'foo',因为它的位置,而second并third得到了他们的价值,因为他们被明确地使用他们的名字通过这些值.
有关详细信息,请阅读文档:http://docs.python.org/3/tutorial/controlflow.html#more-on-defining-functions
正如其他人所说,这是一个keyword argument.实际上,指定或不指定参数之间的区别仅仅是使用哪个参数.
例如,如果你有一个带有3个参数的函数,并且只传递了一个或两个参数,那么你必须指定你使用的参数,以防它们不是你定义中的第一个参数.
def f(a = "a", b = "b", c = "c"):
print a, b, c
>>> f("x")
x b c
>>> f("x", "y")
x y c
>>> f("x", c = "y")
x b y
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |