Python 用于调用函数的变量集

Python 用于调用函数的变量集,python,Python,我希望这个问题不要显得太天真或愚蠢,但我只想得到一个明确的答案作为确认 是否可以设置一个变量来调用函数 i、 e 然后,如果您只键入/使用了var,它将输出test 换句话说,如果函数在Python中从不需要(或接受)参数,是否有另一种不用括号调用函数的方法 我假设这是不可能的,因为您总是需要使用“()”来调用函数,但我很好奇是否有例外情况?您想得太多了: def func(): print "test" var = func var() # calls func() 在python

我希望这个问题不要显得太天真或愚蠢,但我只想得到一个明确的答案作为确认

是否可以设置一个变量来调用函数

i、 e

然后,如果您只键入/使用了
var
,它将输出
test

换句话说,如果函数在Python中从不需要(或接受)参数,是否有另一种不用括号调用函数的方法


我假设这是不可能的,因为您总是需要使用“()”来调用函数,但我很好奇是否有例外情况?

您想得太多了:

def func():
    print "test"

var = func
var() # calls func()
在python中,函数是对象,因此可以将
var
分配给函数
func
,现在它是对
func
的引用。您还可以将变量分配给类定义,因为它们也是对象:

class A(object):
    def __init__(self):
        self.data = 1

B = A # B is the same class type as A
myA = B() # constructs an A
print(myA.data) # prints "1"

你想得太多了:

def func():
    print "test"

var = func
var() # calls func()
在python中,函数是对象,因此可以将
var
分配给函数
func
,现在它是对
func
的引用。您还可以将变量分配给类定义,因为它们也是对象:

class A(object):
    def __init__(self):
        self.data = 1

B = A # B is the same class type as A
myA = B() # constructs an A
print(myA.data) # prints "1"

一般来说,没有。除了注释中提到的之外,您将始终需要应用参数列表(即使它是空的
()
)来实际调用函数。否则,您不会调用函数,而是将函数本身作为值引用

您可以在Python的命令行解释器上轻松地重现这一点:

>>> def func():
...     return "foo"
... 
>>> func() # Actually call the function; statement returns the function's return value
'foo'
>>> func # Reference the function as value; statement returns *the function itself*
<function func at 0x7f2c7a65b938>

>>> var = func # Assign the function value to another variable
>>> var # Now "var" references the same function as "func"...
<function func at 0x7f2c7a65b938>
>>> var() # ...and can also be called as a function
'foo'
>>> 
>>def func():
...     返回“foo”
... 
>>>func()#实际调用函数;语句返回函数的返回值
“福”
>>>func#引用函数作为值;语句返回*函数本身*
>>>var=func#将函数值赋给另一个变量
>>>var#现在“var”引用与“func”相同的函数。。。
>>>var()#…也可以作为函数调用
“福”
>>> 

一般来说,没有。除了注释中提到的之外,您将始终需要应用参数列表(即使它是空的
()
)来实际调用函数。否则,您不会调用函数,而是将函数本身作为值引用

您可以在Python的命令行解释器上轻松地重现这一点:

>>> def func():
...     return "foo"
... 
>>> func() # Actually call the function; statement returns the function's return value
'foo'
>>> func # Reference the function as value; statement returns *the function itself*
<function func at 0x7f2c7a65b938>

>>> var = func # Assign the function value to another variable
>>> var # Now "var" references the same function as "func"...
<function func at 0x7f2c7a65b938>
>>> var() # ...and can also be called as a function
'foo'
>>> 
>>def func():
...     返回“foo”
... 
>>>func()#实际调用函数;语句返回函数的返回值
“福”
>>>func#引用函数作为值;语句返回*函数本身*
>>>var=func#将函数值赋给另一个变量
>>>var#现在“var”引用与“func”相同的函数。。。
>>>var()#…也可以作为函数调用
“福”
>>> 

属性
装饰器允许您将方法伪装为普通属性。这对于应该是计算值的内容非常有用,例如倒计时计时器中剩余的时间。这确保了每次引用该变量时都会动态更新该变量的值,因为它实际上是一个方法调用

>>> class O(object):
...     def __init__(self):
...             self.x = 0
...     @property
...     def x_is_negative(self):
...             return self.x < 0
...
>>> a = O()
>>> a.x_is_negative
False
>>> a.x = -1
>>> a.x_is_negative
True
>>O类(对象):
...     定义初始化(自):
...             self.x=0
...     @所有物
...     def x_为负(自身):
...             返回self.x<0
...
>>>a=O()
>>>a.x_为负
错误的
>>>a.x=-1
>>>a.x_为负
符合事实的

属性
装饰器允许您将方法伪装为普通属性。这对于应该是计算值的内容非常有用,例如倒计时计时器中剩余的时间。这确保了每次引用该变量时都会动态更新该变量的值,因为它实际上是一个方法调用

>>> class O(object):
...     def __init__(self):
...             self.x = 0
...     @property
...     def x_is_negative(self):
...             return self.x < 0
...
>>> a = O()
>>> a.x_is_negative
False
>>> a.x = -1
>>> a.x_is_negative
True
>>O类(对象):
...     定义初始化(自):
...             self.x=0
...     @所有物
...     def x_为负(自身):
...             返回self.x<0
...
>>>a=O()
>>>a.x_为负
错误的
>>>a.x=-1
>>>a.x_为负
符合事实的

对于命令行的使用,还有另一个技巧:
\uuuuu repr\uuuu
。 我用它来调用一个函数,只需一个字符

假设您要调用
f()


对于命令行的使用,还有另一个窍门:
\uuu repr\uu
。 我用它来调用一个函数,只需一个字符

假设您要调用
f()


此问题的可能重复项并不意味着与decorators相关。您可以在适当的类上使用
@属性
decorator来键入
var
,并将其输出
test
。是否要将其包含在列表中?@MarkN,是,您的问题的答案是否定的。此问题的可能重复项并不意味着与decorators相关。您可以在适当的类上使用
@property
decorator来键入
var
,并将其输出到
test
。是否要将其包含在列表中?@MarkN,是的,你的问题的答案是否定的。换句话说,否定?没有()语法。换句话说,否定?没有()语法。这就是我所指的,谢谢。我只是好奇,是否有其他可能的方法来调用函数,而不遵循[Python中]括号的正常使用……这就是我所指的,谢谢。我只是好奇,是否有其他可能的方法来调用函数,而不遵循[Python中]括号的正常使用……我用这个想法做了一个装饰器:
@without()
\
def():从命令行解释器打印“Hey”
\callby
f
。我用这个想法做了一个装饰师:
@Without()
\
def():从命令行解释器打印“Hey”
\Call by
f