GVKun编程网logo

SyntaxError:非默认参数跟随默认参数(默认值参数可以定义在非默认值参数的前面)

8

以上就是给各位分享SyntaxError:非默认参数跟随默认参数,其中也会对默认值参数可以定义在非默认值参数的前面进行解释,同时本文还将给你拓展ajaxFileUploadSyntaxError:sy

以上就是给各位分享SyntaxError:非默认参数跟随默认参数,其中也会对默认值参数可以定义在非默认值参数的前面进行解释,同时本文还将给你拓展ajaxFileUpload SyntaxError: syntax error、angularjs – ui.router:如何从URL中省略默认参数、asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默认参数?、c – 具有默认参数值的函数中的默认对象值等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

SyntaxError:非默认参数跟随默认参数(默认值参数可以定义在非默认值参数的前面)

SyntaxError:非默认参数跟随默认参数(默认值参数可以定义在非默认值参数的前面)

from os import systemdef 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(…”,并用红色突出显示“(”。我不知道为什么。

答案1

小编典典

让我在这里澄清两点:

  • 首先,非默认参数不应跟随默认参数,这意味着您无法(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中。

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

ajaxFileUpload SyntaxError: syntax error

ajaxFileUpload SyntaxError: syntax error

在使用ajaxFileUpload上传文件时,Chrome没问题,IE和Firefox出错,Firefox报SyntaxError: Syntax error错误

JS代码如下:

$.ajaxFileUpload( {
	url : 'FileUpload.do',secureuri : false,fileElementId : 'imgFile',dataType : 'json',success : function(data,status) {
		//...
	},error : function(data,status,e) {
		alert(e);
	}
 })
我们可以看到dataType返回值为json,而后台却没有返回json数据所以报错

后台加上如下代码,返回前台需要的数据

PrintWriter out =response.getWriter();
out.println("{msg:1,name:'" + name + "',id:'" + id + "'}"); //返回JSON
out.close();
此错误为特定情况下产生的,不一定有共性,供参考。

angularjs – ui.router:如何从URL中省略默认参数

angularjs – ui.router:如何从URL中省略默认参数

我在 $stateProvider中定义了以下状态:

$stateProvider.state("byTeams",{url : "/team/{id}/{year}",...})
$stateProvider.state("byPlayer",{url : "/player/{id}/{year}",...})

更改一年时,如果URL匹配默认值(比如2014),我希望URL省略URL的{year}部分.换句话说,当:

$state.go("byTeams",{year: 2014}) --> www.example.com/app/#/team/343
$state.go("byTeams",{year: 2013}) --> www.example.com/app/#/team/343/2013

当我切换到byPlayer视图时(假设年份是2014年 – 默认):

$state.go("byPlayer",{id: 555}) --> www.example.com/app/#/player/555/

否则,该网址为:www.example.com/app/#/player/555/2013

解决方法

$stateProvider.state()阅读 docs的params和壁球

$stateProvider.state("byPlayer",{
  url : "/player/{id}/{year}",params: { 
    year: { 
      value: function() { return getCurrentYear(); },squash: true
    }
  }
})

asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默认参数?

asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默认参数?

我正在重写问题,因为迄今为止的答案告诉我,我还没有定义好它.我会留下原来的问题,以供参考.

当您设置路由时,您可以为不同的URL /路由部分指定默认值.让我们考虑VS向导生成的例子:

routes.MapRoute(
            "Default",// Route name
            "{controller}/{action}/{id}",// URL with parameters
            new { controller = "DefaultPage",action = "Index",id = UrlParameter.Optional } // Parameter defaults

在此示例中,如果未指定控制器,则将使用DefaultPageController,如果未指定操作,则将使用“Index”操作.
网址通常如下所示:http:// mysite / MyController / MyAction.

如果Url没有这样的操作:http:// mysite / MyController,那么将使用索引操作.

现在我们假设我的控制器Index和AnotherAction中有两个动作.对应的url分别是http:// mysite / MyController和http:// mysite / MyController / AnotherAction.我的“索引”操作接受参数id.所以如果我需要传递参数到我的索引操作,我可以这样做:http:// mysite / MyController / Index / 123.请注意,与URL http:// mysite / MyController不同,我必须明确指定Index操作.我想做的是能够通过http:// mysite / MyController / 123而不是http:// mysite / MyController / Index / 123.我不需要这个URL中的“索引”我想让mvc引擎识别,当我要求http:// mysite / MyController / 123时,123不是一个动作(因为我没有定义一个这个名字的动作),但是我的默认动作“Index”的参数.如何设置路由来实现?

以下是问题的原始措辞.

我有一个控制器,有这样的两个方法

public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(SomeFormData data)
    {
        return View();

    }

这允许我在用户导航到此URL(GET)时以及随后发布表单(POST)时,像http://网站/页面一样处理Url.

现在,当我处理这个帖子时,在某些情况下,我想将浏览器重定向到这个url:

http://website/Page/123

其中123是一些整数,我需要一个方法来处理我的控制器中的这个url.

如何设置路由,这样做有效?目前我有这样的向导生成的“默认”路由:

routes.MapRoute(
            "Default",id = UrlParameter.Optional } // Parameter defaults

我尝试添加另一个控制器方法,如下所示:

public ActionResult Index(int id)
{
    return View();
}

但是,由于引发了不明确的操作异常,这不起作用:

The current request for action ‘Index’
on controller type ‘PageController’
is ambiguous between the following
action methods:
System.Web.Mvc.ActionResult Index() on
type PageController
System.Web.Mvc.ActionResult
Index(Int32) on type PageController

我必须补充说,我也在这个控制器中有其他的动作.如果没有,This会工作.

解决方法

这是如何解决的:

您可以创建一个路由约束,以指示路由引擎,如果您有一些url中的东西看起来像一个数字(123),那么这是一个默认操作的操作参数,如果你有一些不像number(AnotherAction)然后它是一个动作.

考虑这个代码:

routes.MapRoute(
  "MyController","MyController/{productId}",new {controller="My",action="Index"},new {productId = @"\d+" });

此路由定义将只匹配MyController在http:// mysite / MyController / 123中的数值,因此它不会干扰在同一个控制器上调用另一个操作.

资料来源:Creating a Route Constraint

c – 具有默认参数值的函数中的默认对象值

c – 具有默认参数值的函数中的默认对象值

到目前为止,我知道如果你想将参数的默认值传递给作为对象的函数,你可以这样做:
void function(MyObject obj = MyObject()){
    ...
}

但是,我最近遇到了一些有趣的语法,这让我很困惑.当我们这样调用函数时会发生什么?

void function(MyObject obj = 0){
    ...
}

注意,我们传递一个对象,而不是一个指针.上面的代码编译得很好,没有错误或警告.这总是用一个参数调用构造函数 – MyObject的定义如下:

class MyObject{
public:
    MyObject(double n){std::cout << "Argumented\n";}
    MyObject(){std::cout << "Default\n";}
};

此外,这种行为记录在哪里(因为我搜索并找不到它)?

解决方法

参数默认为通过调用MyObject(double)构造函数从0隐式构造的MyObject.此构造函数允许您隐式实例化MyObjects,如下所示:
MyObject o1 = 0;
MyObject o2 = 420/10.;

如果不打算这样做,那么使构造函数显式.这还需要更改函数的默认参数:

explicit MyObject(double n);

void function(MyObject obj = MyObject(0));

关于SyntaxError:非默认参数跟随默认参数默认值参数可以定义在非默认值参数的前面的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ajaxFileUpload SyntaxError: syntax error、angularjs – ui.router:如何从URL中省略默认参数、asp.net-mvc – asp.net mvc路由:如何使用默认动作,但非默认参数?、c – 具有默认参数值的函数中的默认对象值等相关内容,可以在本站寻找。

本文标签: