python怎样定义初始值,Python初始值

  python怎样定义初始值,Python初始值

  本文主要介绍Python的类成员变量默认初始值的坑及其解决方法,具有很好的参考价值。希望对大家有帮助。如有错误或不足之处,请不吝赐教。

  00-1010 Pit类成员变量的缺省初始值问题发现示例代码结果原因解决方案Python缺省值参数简单而粗糙代码可以按以下方式编写

  

目录

  

类成员变量默认初始值的坑

  在一个循环中,默认值用相同的名称初始化变量,其中列表成员不为空,并将延续前一个同名变量的值。

  

问题发现

  #定义类别

  类变量():

  #使用

  def __init__(self,price=500,description=默认描述,values=[, , ]):

  self.price=价格

  自我描述=描述

  自我价值=价值观

  def __str__(self):

  返回“价格: {},描述: {},值: {}”。格式(自我价格、自我描述、自我价值)

  variant_list=[]

  #迭代创建同名实例

  对于范围(3):中的I

  current_variant=Variant()

  如果i==1:

  current _ variant . values[2]= hello

  current _ variant.price=i

  current _ variant . description= variant : { }的说明。格式(一)

  variant_list.append(当前变量)

  #测试结果

  对于variant_list:中的变型

  打印(字符串(变量))

  

示例代码

  所有实例的值列表值都相同。

  

结果

  在Python中,可选参数默认值的设置只执行一次,即在定义函数时。“这样,默认值用于初始化,列表成员指向同一个列表(地址)。如果只修改了其中一个元素(而不是分配一个新的列表来打开新的内存),那么所有实例的列表成员都将被修改。

  

原因

  在直接构造函数中将其设置为null(self . values=[, , ]),然后修改值。

  

解决方法

  

Python默认值参数

  def fun(a,b=[]):

  乙=[甲]

  打印(b)

  乐趣(1)

  fun(2,[])

  乐趣(3)

  是不是看似简单,实则玄机?请看一下输出结果。是不是让你很纳闷~

  [1]

  [2]

  [1, 3]

  此时的你是否有和我一样的疑惑?为什么fun(3)的输出结果是[1,3]?

  哈哈,没有悬念,这是因为,函数定义后,只会生成一次,所以函数生成时定义的变量B的默认值只会初始化一次。

  所以在执行fun(1)函数时,没有参数传递给B,所以使用B的默认值,B的默认值是[1]。

  在执行fun(2,[])时,将[]的一个值传递给B(与默认值相同,但实际上是不同的数据),所以使用传入的数据,执行结果为[2]。

  然后执行fun(3)后,此刻没有参数传递给B,所以仍然使用B的默认值,B的默认值只会随着函数生成而生成一次(fun(1)已经生成了),所以当前的默认值是fun(1) [1]的执行结果,所以再次调用fun(3)时,输出结果会是[1,3]。

  如果这不可能,那么每次调用函数时都要初始化变量。

  

简单粗暴上代码

  定义函数(a,b=无):

  B=b if b else [] #每次都明确定义b。

  乙=[甲]

  打印(b)

  功能(1)

  函数(2,[])

  功能(3)

  输出结果:

  [1]

  [2]

  [3]

  以上个人经验,希望给你一个参考,也希望你能支持盛行的IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: