24小时热门版块排行榜    

查看: 2261  |  回复: 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

金虫 (正式写手)

引用回帖:
4楼: Originally posted by 月只蓝 at 2017-02-24 12:53:06
根据关键字参数的定义,sep是关键字参数无疑。
可变参数应位于参数列表的最末端。你给出的代码中的参数顺序不对,应改成:
def concat( sep = '/',*args):
    return sep.join(args)

这样在调用时:
...

感觉你说的不对,如果改成你的代码,那么调用concat('earth', 'mars', 'venus'),sep会被赋值为‘earth’。
另外,原代码是python官方3.5.2教程上面的,运行也正常。
5楼2017-02-24 13:34:29
已阅   回复此楼   关注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的回帖
信息提示
请填处理意见