精华内容
下载资源
问答
  • 摆脱违规列表条目中的空元组参数并不能解决问题: FUNCTION_LIST[2] = (f2,) for f,arg in FUNCTION_LIST: f(arg) 导致ValueError:需要多于1个值来解压缩. 我也试过迭代索引而不是列表元素. for n in range(len...

    def f1(n): #accepts one argument

    pass

    def f2(): #accepts no arguments

    pass

    FUNCTION_LIST = [(f1,(2)), #each list entry is a tuple containing a function object and a tuple of arguments

    (f1,(6)),

    (f2,())]

    for f, arg in FUNCTION_LIST:

    f(arg)

    循环中的第三轮,它尝试将一个空的参数元组传递给一个不接受任何参数的函数.它给出了错误TypeError:f2()不带参数(给定1).前两个函数调用正常工作 – 元组的内容被传递,而不是元组本身.

    摆脱违规列表条目中的空元组参数并不能解决问题:

    FUNCTION_LIST[2] = (f2,)

    for f,arg in FUNCTION_LIST:

    f(arg)

    导致ValueError:需要多于1个值来解压缩.

    我也试过迭代索引而不是列表元素.

    for n in range(len(FUNCTION_LIST)):

    FUNCTION_LIST[n][0](FUNCTION_LIST[n][1])

    这在第一种情况下给出相同的TypeError,并且当列表的第三个条目是(f2,)时,IndexError:tuple索引超出范围.

    最后,星号表示法也不起作用.这次调用f1时出错:

    for f,args in FUNCTION_LIST:

    f(*args)

    在*之后给出TypeError:f1()参数必须是一个序列,而不是int.

    我已经没事了.我仍然认为第一个应该工作.谁能指出我正确的方向?

    展开全文
  • 您可以传递的假设列表在Assumptions页面下记录为supported predicates.但是,您还应该注意,可以传入一些其他特殊命名参数.这些都记录在您链接的部分中,并且是:> cls =< ClassName>Despite its name, symbo....

    symbols()函数

    正如其他答案所指出的那样 – 在符号中使用** args是为了传递关于正在创建的符号的假设.您可以传递的假设列表在Assumptions页面下记录为supported predicates.

    但是,您还应该注意,可以传入一些其他特殊命名参数.

    这些都记录在您链接的部分中,并且是:

    > cls =< ClassName>

    Despite its name, symbols() can create symbol-like objects like instances of Function or Wild classes. To achieve this, set cls keyword argument to the desired type:

    注:如果未指定,则使用默认的Symbol类.

    > seq =< True | False>

    文档说:

    If an iterable container is needed for a single symbol, set the seq

    argument to True or terminate the symbol name with a comma

    代码行走

    您注意到您已查看代码 – 因此我将向您展示代码中实现这些内容的位置.如果你调用symbols()函数,它会对其参数进行各种检查,包括来自** args的pop-ing cls and seq参数,然后执行更多检查等,最后调用实例化符号here,here或here.这些调用符号的构造函数(或者它的子类通过cls传递,** args中剩下的任何内容都被解释为assumptions in the constructor. – 它们是sanitized here,即此时非假设或不适用的命名参数为thrown out!

    这表明Assumptions cls seq形成了一组命名参数,可以在** args中传递给symbols()

    其他功能(一般情况)

    在我看来,符号()可能只是作为一般问题的代表性例子.我希望上面已经说服了所有可以有效传递给symbols()的值都记录在案.这可能会让您相信SymPy中的其他功能也是如此.

    但是,在一般情况下,答案是很难向自己证明可以作为keywordarguments传递的所有值都在任何库或函数的文档中.实际上,有时只有一个子集被故意记录,因为它们是库的“公共API”,而实际的代码可能需要其他参数,但出于某种原因,开发人员不希望将它们暴露给公众 – 例如因为它们的可用性可能会改变,或者它们的功能未经测试.

    如果传入了无效参数,则您使用的库的行为可能会有所不同.某些库或函数会忽略它们,而如果传入无效的关键字参数,则其他库会抛出错误.

    如果你想知道是否是这种情况(并且库是开源的,比如SymPy),那么你总是可以浏览代码(正如我在上面的Code Walk中所示).如果你这样做 – 你需要遵循执行的路径,寻找args.pop()的出现.如果您关注的SymPy中还有其他功能,请在评论中告诉我 – 但希望这种通用方法对您有用.

    我在上面假设您了解* args和** args语法.如果这对您来说并不完全清楚 – python official tutorial的这一部分将对其进行处理.

    展开全文
  • 在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长,的错误。这时可以用find命令来结合使用。例:1、rm * -rf 改为:find . -name "*" | xargs rm -rf '*' 就行了。2、rm test* -rf 改为:find ...

    在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长,的错误。

    这时可以用find命令来结合使用。

    例:

    1、rm * -rf 改为:

    find . -name "*" | xargs rm -rf '*' 就行了。

    2、rm test* -rf 改为:

    find . -name "test*" | xargs rm -rf "test*"

    mv时报参数列表过长,

    for i in *.m;do mv $i ${i%.m};done

    于是求助于google,探索过程就省略了,直接说解决方法吧:

    ls dir1 | xargs -t -I {} mv {} dir2/{}

    这里的一对大括号是原文给的例子里用的,后来看了参数的用法,其实那对大括号是可以用任意字符串替换的,比如:

    ls dir1 | xargs -t -I asdf mv asdf dir2/asdf

    效果和大括号那一版是完全一样的,就是看起来有点儿不严肃。

    需要说明的是,上面xargs的第二个参数,是大写的i,读作”爱“的那个字母,不是小写的L。至于参数的含义嘛,我忘了。

    Linux下 报错“命令参数列表过长”,在用mv命令一次移动3万多个文件时失败了,原始命令类似这样:”mv $(ls dir1) dir2“。错误提示的中心思想是:”你这参数也太TM多了吧“。

    按照LZ想法大概可以这么做:find /dir1/ -maxdepth 1 | xargs -i mv {} /dir2/

    如果参数过长,使用tar比较简单

    tar -C /dir1/ -cf - . | tar -xf - -C /dir2/

    于是求助于google,探索过程就省略了,直接说解决方法吧:

    ls dir1 | xargs -t -I {} mv {} dir2/{}

    这里的一对大括号是原文给的例子里用的,后来看了参数的用法,其实那对大括号是可以用任意字符串替换的,比如:

    ls dir1 | xargs -t -I asdf mv asdf dir2/asdf

    效果和大括号那一版是完全一样的,就是看起来有点儿不严肃。

    需要说明的是,上面xargs的第二个参数,是大写的i,读作”爱“的那个字母,不是小写的L。至于参数的含义嘛,我忘了。

    另外4种方法

    作为一个linux用户/系统管理员, 有些时候你会遇到以下错误提示:

    [user@localhost foo]$ mv * ../foo2

    bash: /bin/mv: Argument list too long

    “Argument list too long”参数列表过长错误经常发生在用户在一行简单命令中提供了过多的参数而导致,经常在ls *, cp *, rm * 等中出现。

    根据问题的原因以下提供了四种方法,可以根据自己的情况酌情选用

    方法1 : 将文件群手动划分为比较小的组合

    e.g 1:

    [user@localhost foo]$ mv [a-l]* ../foo2

    [user@localhost foo]$ mv [m-z]* ../foo2

    这是最基本的方法,只是简单的使参数数量符合要求,这种方法应用范围有限,只适用于文件列表中的名字分布比较均匀,另外这也是个初级用户可以考虑的解决方案,不过需要很多重复命令和对文件名分布的观察与猜测。

    方法2 : 使用find命令

    e.g 2:

    [user@localhost foo]$ find $foo -type f -name '*' -exec mv {}$foo2/. \;

    方法2通过find命令,将文件清单输出到mv命令,使其一次处理一个,这样就完全避免了过量参数的存在,另外通过不同的参数,可以指定除了名称以外的时间戳,权限,以及inode等匹配模式。

    方法2的缺点在于比较耗费时间。

    方法3 : 创建shell函数

    e.g 3.1:

    function huge_mv ()

    {whileread line1; do

    mv foo/$line1 ../foo2

    done

    }

    ls -1 foo/ | huge_mv

    写一个shell函数并不涉及到某种程度的复杂性, 这种方法比方法1和方法2相比更加灵活。

    下面我们来扩展一下例3.1 :

    e.g 3.2:

    function huge_mv ()

    {whileread line1; do

    md5sum foo/$line1 >> ~/md5sums

    ls -l foo/$line1 >> ~/backup_list

    mv foo/$line1 ../foo2

    done

    }

    ls -1 foo/ | huge_mv

    相比例3.1,例3.2生成了文件的md校验散列文件和名字备份,符合给自己留条后路的哲学。

    另外可以根据自己的需要无限制的扩展功能。

    方法4 : 终极解决方案,重新编译内核

    首先使用这个方案之前要谨慎,因为涉及到修改内核源代码,在生产环境中还是要斟酌一下并做好测试。

    另外,这个方法是从根本上解决的,一劳永逸的

    这也是开放源码的好处之一

    首先在内核源码中找到 include/linux/binfmts.h文件 ,搜索到以下字段:

    /*

    * MAX_ARG_PAGES defines the number of pages allocated for arguments

    * and envelope for the new program. 32 should suffice, this gives

    * a maximum env+arg of 128kB w/4KB pages!

    */

    #define MAX_ARG_PAGES 32

    修改 MAX_ARG_PAGES数值为 64 或者更高即可完善的解决参数受限问题。

    然后 重新编译并启用新内核即可。

    展开全文
  • 我在想什么是最好的(最简单的)解决方案,将一个列表或变量数量的参数传递给一个函数/方法。例如,我必须学习以下课程:class Dataset():def __init__(self, *args):self.data_set = args这是setter属性的一部分:@...

    我在想什么是最好的(最简单的)解决方案,将一个列表或变量数量的参数传递给一个函数/方法。

    例如,我必须学习以下课程:

    class Dataset():

    def __init__(self, *args):

    self.data_set = args

    这是setter属性的一部分:

    @data_set.setter

    def data_set(self, args):

    data = []

    for item in args:

    if type(item) is list:

    data = [k for k in item]

    break

    data.append(item)

    self._data_set = data

    我搜索了网页,但找不到太多关于这个话题的内容。这里我的目标是设计类构造函数,使其与给定参数的列表一起工作:

    ds1 = Dataset([4,3,5])

    或变量数或参数:

    ds1 = Dataset(4,3,5)

    那么,什么是最好的实现,我是否在正确的轨道上?

    我不认为这是你想要的,但是如果你把一个*放在你要通过的列表之前(即:ds1 = Dataset(*[4,3,5]),列表将被解包,它将与你键入的一样:ds1 = Dataset(4,3,5)。因为您已经接受了*args作为一个参数,这是您所要做的全部工作。如果这是你想要的,请告诉我,这样我可以把它作为回答,让其他游客看到。

    接受列表或varargs。不要两者兼而有之。

    @阿兰费,你能解释一下为什么吗?

    @Dennispatterson回答得很好,但对于这个特定的案例,我认为Progmatico的解决方案最能回答我的问题;3

    @因为它引入了歧义。如果你的函数被称为func([1, 2]),你怎么知道它是指func(1, 2)还是func([[1, 2]])?

    @很抱歉,作为一个新用户,我的问题可能写得不够好,但我不明白为什么func([1,2])会被误认为func([1,2])?为了这个例子,我已经剥离了异常处理的代码,但是如果使用二维数组(或更多)调用该方法,它将引发异常。

    如果您的函数被称为func(1)或func(1, 2)或func([1], [2]),那么很明显应该发生什么。但是,如果函数的调用类似于func([1, 2]),那么不清楚的是,该列表是应该解包的(类似于func(1, 2))还是应该是单个参数的列表(类似于func(1),除了1被[1, 2]替换)?

    @AranFey我认为应该解包,因为如果每个元素的格式合适(int,float….),就应该检查每个元素。

    @我编辑了我的答案。

    你可以试试这个,

    class Dataset():

    def __init__(self, *args):

    if isinstance(args[0], list) and len(args) == 1:

    print('Received a list')

    else:

    print('Received:', args)

    obj = Dataset(1,2,3)

    obj = Dataset([1,2,3], 2)

    obj = Dataset([1,2,3])

    输出:

    Received: (1, 2, 3)

    Received: ([1, 2, 3], 2)

    Received a list

    号编辑:

    此代码以简单的方式执行您想要的操作。没别的了。还有其他方法,我觉得它们不简单。

    你的评论实际上是个很好的问题。

    问题不在这段代码中,而是在您所要求的和Python语言中。您需要方法重载,而python没有。

    测试参数类型是不精确的,因为python是一种动态类型语言。您可以这样做,但是您将函数的实用性限制为特定的类型。

    测试参数类型也会产生一个典型的if..elif链。

    如果您正在编写函数,请看一下functools.singledispatch修饰器。这就从代码中消除了if..elif链。使用它,您可以定义一个基函数并为每种类型注册特定的实现。简单易读。但这将基于第一个参数路由到函数实现。现在,例如方法,由于self,这将不起作用。你可以改变它,但它看起来不再简单了。

    因为Python不直接支持方法/函数重载,所以您所要求的不是要使用的通用模式。

    现在阿兰费给了你很好的建议。这种编码行为在Python中很少见,实际上会引入歧义。您的API合同变得不清楚。我应该通过一个列表还是varargs。为什么选择?就因为你已经有了带*args和*kwargs的元组和dict,还想要列表吗?如何将"varargs"构建为列表元素?

    您需要一个参数列表或变量数,但是列表本身也有一个"变量数参数"。

    所以要使用其中一个。如果你继续最初的想法,至少保持简单,就像这个答案。

    正是我要找的!但是,如果你(或其他人)能告诉我更多关于这是完成这项任务最常见的方法,例如,在专业环境中,这是否被认为是一种好方法,还是不太可能?

    我编辑了我的答案@kamenhristov,也许很好地满足了需求,但是在Python中,这个需求并不好。

    感谢您的回复,您只提供了我正在寻找的信息类型!肯定会研究functools.singledispatch,并尽量使我的代码清晰明了。

    展开全文
  • 使用pow函数时出现问题:有多个 重载函数 “pow” 实例与参数列表匹配 初学C语言的人在使用pow函数时有时会忽略pow是double的返回值,编译出错。编译器会提示如下: 有多个 重载函数 “pow” 实例与参数列表匹配 : ...
  • 将一条长语句分多行写!!! 对于新手小白来说,看到 matlab 函数中的多个省略号(…),可能会一脸懵逼,这是啥东西? 原来使用省略号三个点(…)是将一条语句换行。 str={['OMP计算中:',num2str(floor(k/P*1000)...
  • 代码如下: def func1(num_list): if ... 2、利用set的自动去重功能,将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。 参考资料:python官网-Doc语法文档
  • 3.2 参数列表与返回值对于代码清单3-1中实现的...这里将要介绍的参数列表与返回值实际上就是实现一个函数的输入和输出功能。通过函数的参数列表,可以为函数传入待处理的数据,从而使一个函数更加通用。例如,...
  • Python函数中参数带星号指的是什么意思发布时间:2020-09-08 13:55:27来源:亿速云阅读:69作者:小新小编给大家分享一下Python函数中参数带星号指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给...
  • 代码如下: def func1(num_list): if ... 2、利用set的自动去重功能,将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。 参考资料:python官网-Doc语法文档
  • 【简答题】源语复述 7.2 教育与城镇化.avi 7.4 ...编写一个函数,接受列表作为参数,如果一个元素在列表中出现了不止一次,则返回True(但不要改变原来列表的值),否则返回False。同时编写调用这个函数和测试结果的程序。
  • Python集合中的元素可以是列表

    千次阅读 2021-03-17 19:49:38
    Python集合中的元素可以是列表。答:×11、以下哪个礼节,【不是】丧礼中的内容?答:B 迎神中国大学MOOC: 双相情感障碍的终生患病率为2.4%,我国平均患病率达到1.5%。( )岁是双相情感障碍的主要发病高峰答:15-30两...
  • 所有数名权益乘数越大,说明股东投入的资本在资产中所占的比重越小,财务杠杆作用越大,财务风险越高。( )类方312967以下极限式中,个参不能用罗必达法则的是( )称必162551所有数名312976下列有关我国汉字编码标准的...
  • 之前python sorted 倒序法在前面文章有中简单介绍过,sort()是python列表排序方法,除了列表cmp()比较函数可以做为参数放在sort(),key和reverse更是经常用到的sort方法另外两个可选参数...
  • 当没有自己编写构造函数时,编译系统将提供一个默认的构造函数,它没有参数,不执行任何语句。 编写的构造函数若没有参数,应如下图student a这样创建对象,调用的是第一个构造函数。注意student a();表示的是...
  • 一、 Dart 面向对象、 二、 类定义、 三、 类的继承、 四、 私有变量、 五、 可选参数与默认参数、 六、 初始化列表、 七、 完整代码示例、 八、 相关资源
  • 当找到一个位置参数(在第二个过程中),我们得到默认值(这是一个列表),并将值添加到该列表中(以后我将称之为“值”列表)。然后,我们使用对“value”列表的引用修改解析器。我们还从名称空间中获得“所有位置...
  • Tableau 2020.1 版本新增的动态参数功能就很好的解决了这问题。你只需完成一次性的参数设置,Tableau 将在每次打开工作簿时自动更新参数的值列表。 那么,如何在 Tableau 中设置动态参数呢?今天我们来分享方法,一...
  • 【单选题】带有默认值的参数一定位于参数列表的末尾。( )【单选题】Python源代码被解释器转换后的格式为( )。【单选题】Python可以开发Web程序,也可以管理操作系统。( ) x = 'abc' y = x y = 100 print(x)【单选题】...
  • python中str函数的作用什么

    千次阅读 2021-07-16 03:09:23
    python中str函数的作用什么发布时间:2021-04-27 16:12:24来源:亿速云阅读:56作者:Leahpython中str函数的作用什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇...
  • 1、sort()方法的key参数 li = [[1, 7], [1, 5], [2, 4], [1, ...def fun(li): #返回列表的第二位数 return li[1] #这时将函数fun传递给参数key 得出结果 li.sort(key=fun) print(li) # [[1, 1], [2, 4], [1, 5],
  • 函数占位参数

    2021-02-20 17:22:26
    1.C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置 2.语法: 返回值类型 函数名(数据类型){ } #include<iostream> using namespace std; //函数占位参数,占位参数也可以...
  • 我可以理解为什么局部变量(self.x)需要它,但是为什么nessecary是函数中的参数?你还有什么可以代替自己的吗?请尽可能多地用外行术语解释,我从来没有受过良好的编程教育。名称self是惯例;但如果你真的想,你可以...
  • 关于java:请求参数和PUT方法

    千次阅读 2021-03-08 07:29:49
    我正在尝试在基于Grails的应用程序中通过PUT请求传递请求参数。我正在使用以下客户端代码提出请求:$.ajax({url: 'api/controllerName/anId',type: 'PUT',data: $('form').serialize()})具有以下映射:"/api/$...
  • 题目:求一组数的平均数,要求:使用可变参数列表,可变参数列表作用:可以处理任意多的参数。可变参数列表实现方法:可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,它是标准库的一部分。这个头文件...
  • 本文对python中的几种参数进行了详细解析,用简单的例子对这几种参数的使用方式进行了剖析,希望帮助到大家!
  • 我一直很难理解h(a)(b)...这些功能是做什么的?我怎么申报?最后,f(a, b)和f(a)(b)有什么区别?具有多个参数括号的函数不存在,正如您在试图定义参数括号时看到的那样。但是,有一些函数返回(其他)函数:def func(...
  • Python函数的非固定参数

    千次阅读 2021-02-10 00:19:15
    一、概述在原来的文章中我已经写了,位置参数和关键字参数,下面我们来谈谈默认参数参数组二、默认参数默认参数指的是,我们在传参之前,先给参数制定一个默认的值。当我们调用函数时,默认参数是非必须传递的。...
  • 它的作用是获取一个字符串,然后将这个字符串拆分成一个包含许多子字符串的列表。在它有两个参数(第二个参数是拆分的次数,应该保留为默认值),第一个参数是分隔符。这是拆分字符串时代码应该查找的字符串。默认情况...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,299,113
精华内容 519,645
关键字:

参数列表作用是什么

友情链接: palindrome.rar