默认参数

默认参数可以简化函数的调用,降低调用函数的难度 设置默认参数时,有几点要注意:   1) 必选参数在前,默认参数在后,否则Python的解释器会报错   2) 如何设置默认参数   当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数 定义默认参数函数

def power(x, n=2): #函数有两个参数:x和n,x是位置参数,n是默认参数,调用函数时,如果只有一个参数传入,则n被设定为2
  s = 1
  while n > 0:
    n = n - 1
    s = s * x
  return s

定义默认参数要牢记一点:默认参数必须指向不变对象   错误例子:

def add_end(L=[]):
  print(L)
  L.append('END')
  return L

add_end() #输出:[]
add_end() #输出:['END']
add_end() #输出:['END', 'END']
#Python函数在定义时,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[]
#如果函数内改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了

  正确例子:

def add_end(L=None):
  if L is None:
    L = []
    L.append('END')
  return L
#之所以要设计str、None这样的不变对象是因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误
#此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有
#编写程序时,要尽量设计一个不变对象

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python函数(一)之杵臼之交

    函数的结构:       def 函数名():             函数体             return语句

    用户2398817
  • Python---限定函数参数的类型及默

    python作为一门动态语言,在使用变量之前是不需要进行定义,而是通过动态绑定的方法将变量绑定为某种类型。这样做为我们使用变量时提供了方便,但有时也给我们使用变...

    用户2398817
  • Python 默认参数值

    Python 默认参数值,对于一些函数来说,你可能为希望使一些参数可选并使用默认的值,以避免用户不想为他们提供值的情况。默认参数值可以有效帮助解决这一情况。你可...

    用户2398817
  • ParamterType(),ResultType(),ResultMap()

    用户5927264
  • Babel下的ES6兼容性与规范

    ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问题,但大...

    IMWeb前端团队
  • 80行JavaScript代码实现的贪食蛇游戏,简约之美

    代码第20行的变量m代表setInterval的第二个参数,单位是毫米,如果大家把默认的200毫秒改成20毫米再启动游戏,看看是不是来到了地狱难度。

    Jerry Wang
  • Babel下的ES6兼容性与规范

    ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问题,但大...

    IMWeb前端团队
  • C语言之字符、整数、数组、字符串笔记

    每种类型占用内存空间不一样,比如char占一个字节,short占2个字节,int占4个字节,double占8个字节

    tandaxia
  • 深度学习可解释性相关论文和代码大全

    https://github.com/lopusz/awesome-interpretable-machine-learning

    代码医生工作室
  • Windows免费好用软件推荐(第二期)

    前两天推送了一期Windows装机免费好用软件推荐 效果非常好, 但上一次的篇幅较短, 没有把好用的软件推荐完, 所以这次做个第二期

    zhaoolee

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动