2013-01-17 140 views
4

在Python中,可以调用del x或del(x)。我知道如何定义一个名为F(x)的函数,但我不知道如何定义一个名为del而没有元组作为参数的函数。Python中F(x)和F x之间的区别

F xF(x)之间有什么区别,以及如何定义一个可以不带圆括号的函数?

>>> a = 10 
>>> a 
10 
>>> del a    <------------ can be called without parenthesis 
>>> a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'a' is not defined 
>>> a = 1 
>>> del (a) 
>>> a 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'a' is not defined 
>>> def f(x): 1 
... 
>>> f (10) 
>>> print f (10) 
None 
>>> def f(x): return 1 
... 
>>> print f (10) 
1 
>>> f 1     <------ cannot be called so 
    File "<stdin>", line 1 
    f 1 
    ^
SyntaxError: invalid syntax 
>>> 
+0

考虑下面的语句,它暗示关于'del':函数调用在Python中的形式为['f(..)'](http://docs.python.org/2/reference/expressions.html#calls)。 – 2013-01-17 02:20:08

+0

我该如何定义一个陈述?这是我对这个问题的主要误解。 – alinsoar

+0

Python语言不提供定义自定义语句的规定。提供的语句(即del语句)都是保留字,并且使用规则是Python语法规范的一部分。 – 2013-01-17 02:25:50

回答

9

的主要原因是del实际上是一个statement,因此在Python的特殊行为。因此,你不能自己实际定义这些(和这种行为)* - 它是一组保留关键字的内置语言部分。

**我想你可能会编辑Python本身的来源和建立自己的,但我不认为那是你追求的:)*

+0

谢谢。我的问题包括我怎样才能定义一个陈述。我如何定义一个函数 - 比如F,并且可以使用语法'F x'来调用它。 – alinsoar

+2

@alinsoar - 你不能。 '语句'构建在语言中,不能被创建(或覆盖)。 – mgilson

+0

@alinsoar对不起,电脑坏了。我会更新答案,但正如mgilson所说,你实际上无法做到这一点 - 它是该语言的一种内置功能。 – RocketDonkey

相关问题