当前位置: 首页 > 面试题库 >

SyntaxError:非默认参数跟随默认参数

晏炳
2023-03-14
问题内容
from os import system
def a(len1,hgt=len1,til,col=0):
    system('mode con cols='+len1,'lines='+hgt)
    system('title',til)
    system('color',col)

a(64,25,"hi","0b")
input()

当我运行它时,它拒绝“ def a(…”,并用红色突出显示“(”。我不知道为什么。


问题答案:

让我在这里澄清两点:

  • 首先,非默认参数不应跟随默认参数,这意味着您无法(a = 'b',c)在函数中定义。在函数中定义参数的正确顺序为:
  • 位置参数或非默认参数,即 (a,b,c)
  • 关键字参数或默认参数,即 (a = 'b',r= 'j')
  • 仅关键字参数,即 (*args)
  • var-keyword参数,即 (**kwargs)

def example(a, b, c=None, r="w" , d=[], *ae, **ab):

(a,b) 是位置参数

(c=none) 是可选参数

(r="w") 是关键字参数

(d=[]) 是列表参数

(*ae) 仅限关键字

(*ab) 是var-keyword参数

所以先重新安排您的参数

  • 现在第二件事是您必须在执行hgt = len1时定义len1;保存默认值时未定义len1参数;当您定义函数len1时,Python将计算并保存默认值;当此函数不存在时,不存在发生(仅在执行函数时存在)

所以第二个删除"len1 = hgt"它,这是不允许在python中。

请记住参数和参数之间的区别。



 类似资料:
  • 问题内容: 为什么这段代码会引发SyntaxError? 尽管以下代码段运行时没有可见错误: 问题答案: 必须将所有必需的参数放在任何默认参数之前。仅仅是因为它们是强制性的,而默认参数不是必需的。从语法上讲,如果允许使用混合模式,解释器将 无法 决定哪些值与哪些参数匹配。如果参数的输入顺序不正确,则会引发A : 让我们使用您的函数来查看关键字参数。 假设其允许声明函数如上,然后使用上述声明,我们可

  • 我们知道,在调用函数时如果不指定某个参数, Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。 Python 定义带有默认值参数的函数,其语法格式如下: def 函数名(...,形参名,形参名=默认值):     代码块

  • 本文向大家介绍Lua 默认参数,包括了Lua 默认参数的使用技巧和注意事项,需要的朋友参考一下 示例 该功能是一个简单的功能,并且效果很好。但是,如果我们刚刚打电话会发生什么sayHello()呢? 那不是很好。有两种解决方法: 您立即从函数返回: 您设置默认参数。 为此,只需使用此简单表达式 这个成语name = name or "Jack"之所以有效,是因为or在Lua中发生短路。如果左侧的项

  • 函数调用可能通常传递参数的特定值。程序员可以将该参数指定为默认参数,程序员可以提供这个参数的默认值。当函数调用中省略默认参数时,默认参数值自动传递给被调用函数。 默认参数必须是函数参数表中最右边(尾部)的参数。调用具有两个或多个默认参数的函数时,如果省略的参数不是参数表中最右边的参数,则该参数右边的所有参数也应省略。默认参数应在函数名第一次出现时指定,通常是在函数原型中。默认值可以是常量、全局变量

  • 如果允许我执行以下操作: 为什么我主要不被允许做以下事情? 但我必须具体说明以下几点: C11引入了默认的模板参数,现在我完全无法理解它们。

  • 对于一些函数,你可能希望它的一些参数是 可选 的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。这个功能借助于默认参数值完成。你可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认参数值。 注意,默认参数值应该是一个参数。更加准确的说,默认参数值应该是不可变的——这会在后面的章节中做详细解释。从现在开始,请记住这一点。 使用默认参数值 例7.5 使用默认参数值 #!