python默认参数调用方法解析


Posted in Python onFebruary 09, 2020

这篇文章主要介绍了python默认参数调用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

最常见的一种形式是的是为一个或者多个参数指定默认值,这会创建一个可以使用比定义时允许的参数更少的参数调用的函数,

def ask_ok(prompt, retries=4, reminder='Please try again!'):
  while True:
    ok = input(prompt)
    if ok in ('y', 'ye', 'yes'):
      return True
    if ok in ('n', 'no', 'nop', 'nope'):
      return False
    retries = retries - 1
    if retries < 0:
      raise ValueError('invalid user response')
    print(reminder)

可以用以下三种调用方式:

  • ask_ok('Do you really want to quit?')
  • ask_ok('OK to overwrite the file?', 2)
  • ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')

默认值在函数定义作用域有效,因此:

i = 5
def f(arg=i):
  print(arg)
i = 6
f()

打印为5

重要提醒:默认参数在定义时赋值,且仅仅赋值一次,当函数多次被调用,且并没有提供默认的参数值,就会从定义时赋值的地方取得值。即使函数中给默认参数重新赋值了,下次调用还是会从定义赋值的地方取得值!当默认参数为可变类型的list/dict等类型时,需要注意。

def f(a, L=[]):
  L.append(a)
  return L

print(f(1))
print(f(2,[]))
print(f(3))

输出为:

[1]
[2]
[1,3]

如果不想让默认值咋后续调用中累积,可以用如下写法:

def f(a, L=None):
  if L is None:
    L = []
  L.append(a)
  return L

假如默认参数是可变对象,函数内对参数的改变会影响原始对象,下次调用函数默认参数已经被更改

假如默认参数是不可变对象,函数内对参数赋值时,参数会引用内存其他地方,下次调用函数时还是会从定义时赋值的地方取值。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python pdb调试方法分享
Jan 21 Python
Python struct模块解析
Jun 12 Python
python实现得到一个给定类的虚函数
Sep 28 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
May 25 Python
Python获取网段内ping通IP的方法
Jan 31 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
python实时检测键盘输入函数的示例
Jul 17 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python集合操作方法详解
Feb 09 #Python
Python字符编码转码之GBK,UTF8互转
Feb 09 #Python
Python基础之字符串操作常用函数集合
Feb 09 #Python
python连接PostgreSQL过程解析
Feb 09 #Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 #Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 #Python
python 爬取疫情数据的源码
Feb 09 #Python
You might like
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
Windows2003下php5.4安装配置教程(IIS)
2016/06/30 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
jquery缓动swing liner控制动画过程不同时刻的速度
2014/05/29 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
js实现文字截断功能
2016/09/14 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
js禁止表单重复提交
2017/08/29 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
TensorFlow实现卷积神经网络
2018/05/24 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
求职意向书范文
2014/04/01 职场文书
市场营销工作计划书
2014/09/15 职场文书
超市督导岗位职责
2015/04/10 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Python制作春联的示例代码
2022/01/22 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers