为何Python函数内arg是列表,返回后却为字符串?代码问题咨询
问题解答:为何函数处理后变量还是原字符串?
先看你贴的代码:
def strip_split(arg): arg = arg.split(", ") return arg users = ["admin, adm1n"] for user in users: strip_split(user) print(user) print(user[0])
问题出在这两点:
- 字符串是不可变类型:Python里字符串一旦创建就无法修改,你把
user传给函数时,函数拿到的是这个字符串的副本,函数内部修改arg只是修改了这个副本,完全不会影响外部的user变量。 - 未接收函数返回值:你的函数已经把处理好的列表返回了,但调用
strip_split(user)后,你没把返回的结果重新赋值给user,所以user始终还是原来的字符串。
要达到你预期的效果,只需要把函数返回的结果重新赋值给user即可,修改后的代码如下:
def strip_split(arg): arg = arg.split(", ") return arg users = ["admin, adm1n"] for user in users: user = strip_split(user) # 接收函数返回的处理结果 print(user) print(user[0])
这样运行后,print(user)会输出['admin', 'adm1n'],print(user[0])会输出admin,和你的预期一致。
内容的提问来源于stack exchange,提问作者Alex Thomas
相关产品推荐
相关产品推荐

