在写程序时,经常会碰见传递过多参数的情况。先看一个例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)def func1(id, name, age, **kw):amount = 1duration = 10func2(id = id, name = name, age = age, amount = amount, **kw)def func2(**kw):print(kw)

在 func1() 给 func2() 传递参数,一个一个的写真的很痛苦,写一次还好,关键是到处都有这种情况。

可不可以将想要的参数打包直接传递过去呢?

内置方法 locals() 就可以达到这个效果,它可以实时收集当前作用域的参数,并返回一个字典。

先在全局范围内看看有哪些参数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)if __name__ == "__main__":print(locals())
$ python locals_demo.py
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x102c75860>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'locals_demo.py', '__cached__': None}

可能你到没注意到一个空文件里都有这么多的内置参数。

locals() 收集参数是实时进行的,比如我们定义一个参数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)if __name__ == "__main__":print(locals())name = 'wxnacy'print(locals())
$ python locals_demo.py{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1083d5860>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'locals_demo.py', '__cached__': None}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x1083d5860>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'locals_demo.py', '__cached__': None, 'name': 'wxnacy'}

第二次打印的结果中,就多出了刚刚定义的参数 name

在方法中使用也是如此

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)def func(**kw):name = 'wxnacy'print(locals())if __name__ == "__main__":func(url = 'https://wxnacy.com')
$ python locals_demo.py
{'kw': {'url': 'https://wxnacy.com'}, 'name': 'wxnacy'}

因为 locals() 方法的值是动态变的,所以我们可以先用变量储存起来,并且记得去掉不需要的参数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)def func(id, age, **kw):name = 'wxnacy'args = locals()args.pop('name')print(args)

或者

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)def func(id, age, **kw):args = locals()name = 'wxnacy'print(args)

现在再来回顾下开始的问题,这下解决方式简单了很多

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: wxnacy(wxnacy@gmail.com)def func1(id, name, age, **kw):amount = 1args = locals()duration = 10func2(**args)def func2(**kw):print(kw)

python3 获取 当前作用域 全部参数的内置方法 locals()相关推荐

  1. [Python3] 015 冰冻集合的内置方法

    目录 0. 前言 英文名 元素要求 使用限制 返回 方法数量 1. 如何查看 frozenset() 的内置方法 2. 少废话,上例子 2.1 copy() 2.2 difference() 2.3 ...

  2. python3.5怎么使用-Python3.5常见内置方法参数用法实例详解

    本文实例讲述了Python3.5常见内置方法参数用法.分享给大家供大家参考,具体如下: Python的内置方法参数详解网站为:https://docs.python.org/3/library/fun ...

  3. python基础30个常用代码大全-Python3列表内置方法大全及示例代码小结

    Python中的列表是简直可说是有容乃大,虽然看似类似C中的数组,但是Python列表可以接受任意的对象元素,比如,字符串,数字,布尔值,甚至列表,字典等等,自由度提升到一个新的高度,而Python也 ...

  4. angular 判断字符串为空_总结:44个Python3字符串内置方法大全及示例

    概述 Python中字符串是作为一种强大的处理工具集的存在,而不是类C中使用的那么难受.因为Python提供了一系列字符串操作的方法,从大小写转换.切片操作到查找等等应有尽有,几乎满足日常的使用场景, ...

  5. stylus使用文档总结:内置方法+参数+条件+迭代+导入+继承

    一.内置方法 返回各种颜色的比重(如red(color)等) 颜色函数是CSS预处里器中内置的颜色函数功能,这些功能可以对颜色值进行处理,例如颜色的变亮.变暗.渐变颜色等处理十分的方便. lighte ...

  6. python如何判断字典中是否存在某个键_总结:11个Python3字典内置方法大全及示例...

    概述 字典有着类似列表的高灵活度的特点,而与列表通过偏移索引的存取元素的方式不同,字典是通过无序的键来存取键值对的,即字典是任意对象的无需集合,可在原处增加或减少,且支持任意深度的嵌套(即可以包含诸如 ...

  7. Android获取手机中外置内存卡、内置内存卡、手机内存路径

    http://www.open-open.com/code/view/1433585940578 首先内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己 ...

  8. 第二模块:函数编程 第1章·文件处理、函数、装饰器、迭代器、内置方法

    鸡汤之人丑就要读书 推荐:<追风筝的人><白鹿原><阿甘正传><幸德勒的名单> 三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件 ...

  9. python的装饰器迭代器与生成器_python3 装饰器、列表生成器、迭代器、内置方法详解等(第四周)...

    前言: 为什么要学习python3? 原因: 1.学习一门语言能力 2.通过该语言能力完成测试自动化以及独立完成自测框架知识 那么我要做什么呢? 1.每天花十个小时完成python3的学习 要在什么地 ...

最新文章

  1. 移动端web开发常见问题
  2. Windows Pe 第三章 PE头文件-EX-相关编程-2(RVA_FOA转换)
  3. C#如何得到运行中和杀死运行中的进程?
  4. 叫你两招编辑PDF文档的方法
  5. 淘宝SEO培训视频课程【22讲】
  6. 第12篇:Flowable-BPMN操作流程之用户任务UserTask
  7. 用nohup重定向python输出到文件不成功的解决办法
  8. Android开发实战手把手教你实现一个折叠式布局
  9. java查询F分布表
  10. android模拟win98中文版,Win98模拟器
  11. BP神经网络及其学习算法
  12. 信息检索关键词的进阶使用
  13. mac-python包安装错误 [Errno 1] Operation not permitted: '/var/folders/5n/vbm997m56xg3kw67y6bccn2m0000gn/T
  14. 热备用冷备用_个性化您的备用帐户的10种方法
  15. 前端水印生成方案(网页水印+图片水印)
  16. c#NPOI操作word小心得
  17. 逻辑强化(06)分析推理 答案解析
  18. 计算机论文折线图,干货 | 画论文折线图、曲线图?几个代码模板轻松搞定!
  19. 【重学UML】UML类图关系及其对应代码
  20. 全球数字高程数据:ASTER GDEM

热门文章

  1. mysql 连接串 utf8_mysql 连接url中useUnicode=truecharacterEncoding=UTF-8 的作用
  2. Windows 8.1 PLSQL_32连接到RHEL6.1 Oracle10gr2_64
  3. 安卓蓝牙调试软件和微信小程序搜索不到设备
  4. 修改altium designer原理图右下角信息
  5. [技术转载]C#知识点集合 (面试必备)
  6. Java笔记14:泛型初探
  7. C++Builder Berlin 编译
  8. 计算机视觉与图像处理相关的国内外重要期刊汇总
  9. Ajax 网页异步调用
  10. Linq多表查询条件批量删除