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.

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

解决方法

您在此代码段中的评论显示了与此相关的误解:
FUNCTION_LIST = [(f1,())]

表达式(2)和(6)不是元组 – 它们是整数.您应该使用(2,)和(6,)来表示您想要的单元素元组.修复此问题后,您的循环代码应如此:

for f,args in FUNCTION_LIST:
    f(*args)

有关* args语法的说明,请参阅Python教程中的Unpacking Argument Lists.

Python – 函数/参数元组列表的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. xcode – XCTest一个元组

    我正在尝试构建一个单元测试:但是Xcode给了我一个错误:无法使用类型的参数列表调用’XCTAssertEqual’是否有不同的方法来测试元组而不提取其成员并单独测试?解决方法XCTAssertEqual要求传递给它的两个参数是Equatable,您可以从方法签名中看到它们.注意,expression1返回T?,T必须是Equatable:但是Swifttuplesaren’tEquatable,所以你不能将它们与XCTAssertEqual一起使用.元组确实有一个==方法–它们只是不符合协议–所以你可以

  3. ios – 在NSUserDefaults中保存一个元组

    我正在使用一个元组来存储这样的东西.现在我想将它保存在NSUserDefaults中.但是我收到以下错误.类型'’不符合协议’AnyObject’我该如何解决这个问题?

  4. 一 Swift学习之基础部分

    **一Swift学习之基础部分————–借鉴老码团队翻译组-Tyrion**//1.1常量和变量letsum=0//声明常量,值不可修改varnumber=1//声明变量,值可修改varx=0.0,y=1.0,z=2.0//在一行声明多个常量或变量用逗号隔开//1.2类型标注//声明常量或变量时可以加上类型标注,表示这个常量或变量存储的类型,但是如果你没有添加类型,而是赋了初始值,swift会自己推断类型letnum:Int=0varstr:String?Swift提供了两种有符号浮点数类型:Double

  5. Swift语法基础:10 - Swift的布尔值, 元组, 可选, 断言

    3.一个可选值现在是nil,但是后面的代码运行需要一个非nil值。

  6. Swift教程 第一章 基础部分

    Swift是iOS和OSX应用开发的一门新语言,Swift的类型是在C和Object-C的基础上提出来的。Int是整型,Double和Float是浮点型,Bool是布尔型,String是字符串。Swift还有两个常用的集合类型:Array数组和Dictionary字典。除了我们熟悉的类型,Swift还增加了Object-C中没有的类型,比如元组。Swift还增加了可选类型,用于处理值缺失的情况。常量和变量必须在使用前声明,用let来声明常量,用var来声明变量。

  7. Swift教程07-基本数据类型(三)元组类型tuple

    元组乃何方神圣?

  8. swift语言-元组

    可以使用隐氏类型推断,也可以有类型标注。例子如下:2元组数据的访问1.使用下标访问,这种访问方式类似于获得数组元素。下标也是从0开始的。用一组变量组和元组值进行对应。让键值参数在元组的圆括号内。

  9. Swift学习:3.元祖

    元组元组把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。下面这个例子中,是一个描述HTTP状态码的元组。HTTP状态码是当你请求网页的时候web服务器返回的一个特殊值。如果你请求的网页不存在就会返回一个404NotFound状态码。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。

  10. Swift学习—元组类型

    知识点:元组数据中的元素可以有名称也可以没有名称元组数据中的元素可以为空元素访问可以通过元素名称或者下标声明成var的元组数据中的元素可以被改变可以指定元素的类型可以用多个变量接收元组数据可以将元素分别赋值给多个变量可以用下划线_忽略某个元素的值,从而取出其他的元素示例代码:

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部