带返回状态的Python调用函数

2024-05-28 20:39:39 发布

您现在位置:Python中文网/ 问答频道 /正文

下面这篇文章创建了一些person对象,并对这些对象应用了一些方法。在

class Person:
    def __init__(self, name, age, pay=0, job=None):
        self.name = name
        self.age  = age
        self.pay  = pay
        self.job  = job

    def lastname(self):
        return  self.name.split()[-1]

    def giveraise(self,percent):
        return self.pay *= (1.0 + percent)

if __name__ == '__main__':
    bob = Person('Bob Smith', 40, 30000, 'software')
    sue = Person('Sue Jones', 30, 40000, 'hardware')
    people = [bob,sue]
    print(bob.lastname())
    print(sue.giveraise(.10))

一旦我运行这个程序,这就是输出--

语法错误:无效语法

但当我使用下面的代码运行时,我没有任何问题

^{pr2}$

两种情况有什么区别


Tags: 对象nameselfagereturndefjobpay
3条回答

即使在第二个版本中也会出现无效语法错误;我不知道您是如何使它工作的,但是您必须更改了giveraise函数。在Python中,赋值,包括那些使用*=这样的赋值,是语句,而不是表达式;它们没有值。因为它们没有值,所以从函数返回它们是没有意义的,因此会出现错误。在

*=是赋值,赋值是Python中的语句,而不是表达式。尝试:

self.pay *= (1.0 + percent)
return self.pay

在这两种情况下我都有问题:

def giveraise(self,percent):
    return self.pay *= (1.0 + percent)

将其更改为这个,它将工作:

^{pr2}$

我不完全确定Python为什么抛出语法错误,但我知道这是可行的。在

相关问题 更多 >

    热门问题