Python —— 函数或类后面括号的作用


一、函数后面的括号

  示例:

def fun(args):
    return args

alias = fun  # alias: <function fun at 0x00000261B9642AE8>
alias_value = alias('alias_args')  # alias_value: 'alias_args'
return_value = fun('args_val')  # return_value: 'args_val'

   上面注释是我们得到结果:

  • 不带括号时,我们是把函数对象赋值给了alias,并不是实际执行该函数。
    • 也可以看成取fun函数所在的内存地址赋值给alias
    • 也可以看成给fun函数起了另外一个名字,所以我们alias(‘alias_args’)可以直接使用fun函数功能
  • 带括号时,就相当于调用了这个函数,如果此函数有形参,就必须对其赋值。返回return的结果。
      对于函数后面不带括号的使用方法,在python中很常见,往往是作为一个变量传递给另外一个函数。举个例子:
def square(x):
    return x ** 2


list_before = [1, 2, 3, 4, 5]  # list_before: [1, 2, 3, 4, 5]
list_after = list(map(square, list_before))  # list_after: [1, 4, 9, 16, 25]

  上面例子中square就作为一个参数传递给了map,这样map函数里面就可以直接调用square函数了。

二、类后面的括号

class Test:
    class_attribute = 'class_attribute'

    def __init__(self):
        self.class_attribute = 'init_value'

class_value = Test.class_attribute  # class_value: 'class_attribute'
init_value = Test().class_attribute  # init_value: 'init_value'

   上面注释是我们得到结果:

  • 不带括号时,相当于我们对类直接操作,上面直接读取类的属性(class.attribute方式)。
  • 带括号时,相当于我们对类进行实例化,得到了一个__init()__后的对象。上面__init()__中对class_attribute进行了修改。所以实例化后对象的class_attribute属性值为 ‘init_value’。

  根据上面类不带括号的操作,我们可以直接修改类属性。

class Test:
    class_attribute = 'class_attribute'
    variable_value = 'variable_value'

    def __init__(self):
        self.class_attribute = 'init_value'

variable_value_before = Test.variable_value  # variable_value_before: 'variable_value'
variable_value_instance_before = Test().variable_value  # variable_value_instance_before: ''variable_value''
Test.variable_value = 'modify_value'
variable_value_instance_after = Test().variable_value  # variable_value_instance_after: ''modify_value''

  从上述例子可知,直接修改类属性后会对后面实例化的对象有影响。

  • 19
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值