You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数调用练习遇阻:第8种调用写法报错求助

问题排查与解决方案

Hey there! Let's break down what's going wrong here and fix it up for you 😊

首先看你的问题根源

你定义的function需要两个必填的位置参数(arg1和arg2),但你调用的时候只传了一个参数:'{} {}'.format(1, 2)会生成一个字符串"1 2",相当于只给函数传了一个值,Python自然会报错说参数数量不匹配(你应该能看到类似TypeError: function() missing 1 required positional argument: 'arg2'的提示)。
另外补充个小细节:你原来的函数定义缺了def关键字,这也是脚本运行会报错的原因之一哦。

修正你的调用代码

如果你的目标是用format()的方式给函数传参,应该把两个参数分别格式化后传递,而不是合并成一个字符串:

def function(arg1, arg2):
    print(f"I have {arg1} letters.")
    print(f"And I have {arg2} friends.")
    print("Wow, I need more friends...\n")

# 修正后的调用:分别传递两个格式化后的参数
function('{}'.format(1), '{}'.format(2))

帮你凑够10种函数调用方式

既然你需要完成10种不同的调用方式,这里给你整理全10种,方便你参考:

    1. 基础位置参数调用:function(5, 3)
    1. 关键字参数调用:function(arg1=5, arg2=3)
    1. 调换顺序的关键字参数:function(arg2=3, arg1=5)
    1. 列表解包调用:args = [5, 3]; function(*args)
    1. 字典解包调用:kwargs = {'arg1':5, 'arg2':3}; function(**kwargs)
    1. 混合位置+关键字参数:function(5, arg2=3)
    1. 直接传字符串字面量:function("five", "three")
    1. 用format()分别传参(就是你想尝试的第8种):function('{}'.format(1), '{}'.format(2))
    1. 用f-string传参:function(f"{2*3}", f"{len(['Alice', 'Bob'])}")
    1. 传变量表达式:a = 10; b = len("hello"); function(a, b)

慢慢来,编程基础薄弱没关系,多试几种调用方式,你很快就能掌握参数传递的逻辑啦!

内容的提问来源于stack exchange,提问作者nmaloof94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:54:19