又是Python初學者問題,關於空串列等等

""我理解為空字串
[]為空串列
請問下面碼中的 args[0][:0]該理解為什麼呢
type(args[0][:0])會顯示為<class 'list'>
請問它與[]有什麼不同及特性呢?
我將它替換為[]print(adder1(["a","b"],["c","d"]))還能執行成功
執行 print(adder1("god","damn","it"))就報錯了
不了解其中差異.....

def adder1(*args):
    if type(args[0])==type(0):
        sum = 0
    else:
        sum = args[0][:0]
    for arg in args:
        sum = sum + arg
    return sum

print(adder1("god","damn","it"))
print(adder1(["a","b"],["c","d"]))
阅读 1.3k
1 个回答

你如果对计算过程详细分析,就会发现其中的差别。python可变参数*para会将参数组成tuple存储。因此,

adder1("god","damn","it") # 该函数执行,args = ("god","damn","it")
adder1(["a","b"],["c","d"]) # 该函数执行,args = (["a","b"],["c","d"])

python基础牢固的,都知道

# 对于args = ("god","damn","it")
args[0][:0] = ''
# 对于args = (["a","b"],["c","d"])
args[0][:0] = []

很明显是两种不同的类型,一种是'',空字符串;一种是[]空的list。python里面,字符串和list都可以直接
进行运算,所以有了上面的结果。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题