Discuss / Python / 定义的顺序应该是必须参数,可变参数,默认参数,命名关键字参数,关键字参数吧

定义的顺序应该是必须参数,可变参数,默认参数,命名关键字参数,关键字参数吧

Topic source

我看了print()函数就是这样定义的

def print(self, *args, sep=' ', end='\n', file=None): # known special case of print

而且如果按照必选参数、默认参数、可变参数、命名关键字参数和关键字参数。来定义的话,使用会报错

求大神看看:下边是我按照廖大大说的定义的函数;

def person(bixu,moren = '默认',*args,mmgjz,**kwargs):    print(bixu,moren,args,mmgjz,kwargs)    person('必须',moren='moren',1,2,3,mmgjz='命名关键字',a=1,b=2,c=3)

运行报错

  File "E:/PycharmProject/HelloWorld/src/helloword/函数基础.py", line 18

    person('必须',moren='moren',1,2,3,mmgjz='命名关键字',a=1,b=2,c=3)                                 ^

SyntaxError: positional argument follows keyword argument

按照我我说的方式定义:

def person(bixu,*args,moren = '默认',mmgjz,**kwargs):    print(bixu,moren,args,mmgjz,kwargs)person('必须',1,2,3,moren='moren',mmgjz='命名关键字',a=1,b=2,c=3)

这样就不会报错。


  • 1

Reply