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实现汉诺塔递归算法经典案例
Mar 01 Python
Python实现感知机(PLA)算法
Dec 20 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
Python实现的读写json文件功能示例
Jun 05 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
通过shell+python实现企业微信预警
Mar 07 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
python分割一个文本为多个文本的方法
Jul 22 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
Python实现异步IO的示例
Nov 05 Python
解决hive中导入text文件遇到的坑
Apr 07 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实现Linux服务器木马排查及加固功能
2014/12/29 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
javascript 隔行换色函数代码
2010/10/24 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
深入理解JavaScript系列(44):设计模式之桥接模式详解
2015/03/04 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
详解Angular Karma测试的持续集成实践
2019/11/15 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
Python实现多并发访问网站功能示例
2017/06/19 Python
Python用for循环实现九九乘法表
2018/05/31 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
简单了解django索引的相关知识
2019/07/17 Python
python爬取微博评论的实例讲解
2021/01/15 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
学生处主任岗位职责
2013/12/01 职场文书
网页美工求职信
2014/02/15 职场文书
合伙协议书
2014/04/23 职场文书
品质口号大全
2014/06/17 职场文书
计划生育证明格式范本
2014/09/12 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
离婚协议书范本
2015/01/26 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
实践论读书笔记
2015/06/29 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python