我在一个函数中使用

argspec,它接受另一个函数或方法作为参数,并返回一个这样的元组:

(("arg1", obj1), ("arg2", obj2), ...)

这意味着传递函数的第一个参数是arg1,它的默认值为obj1,依此类推.

这是一个问题:如果它没有默认值,我需要一个占位符值来表示这一点.我不能使用None,因为那时我无法区分无默认值和默认值是None.对于False,0,-1等也是如此.我可以使它成为一个单元素的元组,但是然后用于检查它的代码将是丑陋的,我不能轻易将它变成一个字典.所以我想我会创建一个非类似的非对象,这就是我想出来的:

class MetaNoDefault(type):

def __repr__(cls):

return cls.__name__

__str__ = __repr__

class NoDefault(object):

__metaclass__ = MetaNoDefault

现在(“arg1”,NoDefault)表示arg1没有默认值,我可以做一些事情,比如obj1是NoDefault:等等.元类使它打印为NoDefault而不是< class'__ ___ _.NoDefault'>.

有没有理由不这样做?有更好的解决方案吗?

python中用来占位_自定义占位符,如python中的None相关推荐

  1. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  2. python文件路径过滤器_自定义过滤器及标签

    代码布局(自定义的代码,放在哪里) 1,某个app特有的 --app目标下,templateags 文件夹 --再到ttemplateags 文件夹下创建python模块(py文件) 2,定义复用 - ...

  3. python executemany执行延迟_运维架构师-Python 自动化运维开发-031

    *运维架构师-Python 自动化运维开发-031 十九.Python3 操作数据库 1.Python3 操作 MySQL 1.基本介绍 Python3 操作 MySQL 数据库 可以使用的模块是 p ...

  4. 有没有可以刷python题的软件_你想要的Python面试都在这里了【315+道题】

    第一部分 Python基础篇(80题) 1.为什么学习Python? 1.python是脚本语言,作为程序员至少应该掌握一本通用脚本语言,因为脚本语言与编译语言的开发测试过程不同,可以极大的提高编程效 ...

  5. python办公自动化博客_最全总结 | 聊聊 Python 办公自动化之 Word(下)

    1. 前言 关于 Word 文档的读写,前面两篇文章分别进行了一次全面的总结 最全总结 | 聊聊 Python 办公自动化之 Word(上) 最全总结 | 聊聊 Python 办公自动化之 Word( ...

  6. python模块和包_(三)运用Python模块和包

    1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...

  7. python打造excel神器_超简单:用Python让Excel飞起来

    前言 如何获取学习资源 章Python快速上手 1.1为什么要学习用Python控制Excel 1.2Python编程环境的搭建 1.2.1安装Python官方的编程环境IDLE 1.2.2安装与配置 ...

  8. python函数模块化教程_【软件测试教程】Python模块化以及内置模块的使用

    一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...

  9. python 功能化模块_【软件测试教程】Python模块化以及内置模块的使用

    一:什么是模块 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能. 二:模块类型 1:自定义模块 由编程人员自己写的模块.自定义模块时要 ...

最新文章

  1. matplotlib交互模式
  2. uni-app 封装企业微信config
  3. CrazePony飞行器--相关资料网址
  4. 数据结构实验之链表八:Farey序列
  5. 批量给MapGis文件正确的地图参数
  6. 时艳强对话酒儿:gate首发平台币的时机选择
  7. 如何将 SAP 电商云 Spartacus UI 部署到 tomcat 上运行
  8. Unix系统编程()发送信号kill
  9. 河南省队选拔 HAOI2015 解题报告
  10. Oracle 索引失效的六大限制条件
  11. Debian,从安装到喜欢
  12. web.xml 详解
  13. 解决办法:look up error: undefined symbol
  14. 如何开发Android安卓APP读写NFC Ntag
  15. [读书笔记] 代码整洁之道(二)
  16. 国税报表html,国税纳税申报表在哪里打印
  17. 详解apply的用处
  18. H264(AVC)/H265(HEVC)/H266(VVC):块划分的区别
  19. HBuilder X详细教程
  20. 如何查html病毒svchost.exe,解决html文件的DropFileName = svchost.exe木马

热门文章

  1. asp中正则表达式应用
  2. C语言嵌入式系统编程修炼之道——屏幕操作篇
  3. C#设置WebBrowser IE浏览器版本
  4. HTTP Basic 验证客户端 C#实现笔记
  5. mybatis转义符(亲测)
  6. Python中的支持向量机SVM的使用(有实例项目给的地址)
  7. Linux之cut:简化版的awk
  8. 成电计算机学院保研率,985一条街的街友们,我就想问问电子科技大学(成电)到底是什么水平的学校啊!...
  9. java 语法 冒号_java中生僻的冒号跳转语法
  10. Apache与Tomcat整合