24小时热门版块排行榜    

查看: 2262  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tuburfransth

金虫 (正式写手)

[求助] 这段Python代码中sep是什么类型的参数?

代码如下:
def concat(*args, sep = '/'):
    return sep.join(args)

调用:
concat('earth', 'mars', 'venus')
输出:
‘earth/mars/venus’

请问,函数concat定义中的sep参数是哪种参数,是默认参数还是关键字参数?
我的疑问:如果是关键字参数,但是关键字参数是不能放在可变参数之后的;而如果是关键字参数,为什么函数调用时没有为该参数赋值?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tuburfransth

金虫 (正式写手)

送红花一朵
引用回帖:
6楼: Originally posted by 月只蓝 at 2017-02-24 15:55:31
应该是版本问题。

在python2.5中,你给的代码:

def concat(*args, sep = '/'):
    return sep.join(args)


因为关键字不能放在可变参数之后,会报语法错误,需将定义函数时的参数列表改为:(sep ...

谢谢解答,我使用的是3.0以上的版本,所以不熟悉2.0的语法,还好有你的验证。
7楼2017-02-24 18:13:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

月只蓝

主管区长 (职业作家)


jjdg: 金币+1, 感谢参与 2017-02-24 20:29:48
sep应该是字符串类型的参数,在程序中的含义是“分隔符”。
join方法本身是一种字符串方法。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2017-02-24 11:27:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tuburfransth

金虫 (正式写手)

引用回帖:
2楼: Originally posted by 月只蓝 at 2017-02-24 11:27:13
sep应该是字符串类型的参数,在程序中的含义是“分隔符”。
join方法本身是一种字符串方法。

答非所问啊,你说的我知道。但是我问的是sep是哪种参数,默认参数还是关键字参数?
3楼2017-02-24 11:44:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
3楼: Originally posted by tuburfransth at 2017-02-24 11:44:24
答非所问啊,你说的我知道。但是我问的是sep是哪种参数,默认参数还是关键字参数?...

根据关键字参数的定义,sep是关键字参数无疑。
可变参数应位于参数列表的最末端。你给出的代码中的参数顺序不对,应改成:
def concat( sep = '/',*args):
    return sep.join(args)

这样在调用时:
concat('earth', 'mars', 'venus')
sep使用定义函数的默认值。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
4楼2017-02-24 12:53:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见