NB(注意): # 后面的部分表示输出结果。
第一种:类似于其他语言的中规中矩的赋值方式,代码如下:

class Debug:def __init__(self):self.x1 = 5self.x2 = 6def printNum(self):print(f"the value of x1 is: {self.x1}") # the value of x1 is: 5print(f"the value of x2 is: {self.x2}") # the value of x2 is: 6if __name__ == "__main__":main = Debug()main.printNum()

最常见的一种赋值方式,每个变量占据一行进行赋值。
第二种:赋值语句在一行分开完成,代码如下:

class Debug:def __init__(self):self.x1 = 5; self.x2 = 6def printNum(self):print(f"the value of x1 is: {self.x1}") # the value of x1 is: 5print(f"the value of x2 is: {self.x2}") # the value of x2 is: 6if __name__ == "__main__":main = Debug()main.printNum()

可以看到此时我们将两个赋值语句放置在同一行,并用分号隔开,此时也可以成功完成赋值,分号类似于C#语言中结尾的分号的作用,告诉程序当前行执行完毕。
第三种是:赋值语句在一行合并完成,专业术语叫做序列解包 ,代码如下:

class Debug:def __init__(self):self.x1, self.x2 = 5, 6def printNum(self):print(f"the value of x1 is: {self.x1}") # the value of x1 is: 5print(f"the value of x2 is: {self.x2}") # the value of x2 is: 6if __name__ == "__main__":main = Debug()main.printNum()

我们将多个变量名用逗号隔开放在左侧,使用一个赋值号,并将对应想要给与的值放在右侧的相应位置,也用逗号隔开即可,从结果可以看到我们也成功完成了赋值。当要给多个变量赋值的时候推荐使用这种形式
第四种:当两个变量值相等的时候可以连等赋值,专业术语叫做链式赋值。代码如下:

class Debug:def __init__(self):self.x1 = self.x2 = 5def printNum(self):print(f"the value of x1 is: {self.x1}") # the value of x1 is: 5print(f"the value of x2 is: {self.x2}") # the value of x2 is: 5print(id(self.x1))                      # 140703956215952print(id(self.x2))                      # 140703956215952self.x1 = 7print(f"the value of x1 is: {self.x1}") # the value of x1 is: 7print(f"the value of x2 is: {self.x2}") # the value of x2 is: 5print(id(self.x1))                      # 140703956216016print(id(self.x2))                      # 140703956215952if __name__ == "__main__":main = Debug()main.printNum()

然而上述的赋值方法存在隐患,先说明一下id()函数的作用:
id(): 函数返回对象的标识。 这是给定对象唯一的整数,并且在其生存期内保持不变。
我们可以看到当我们完成链式赋值时,此时变量self.x1self.x2的标识是一样的,可以理解为都是张三这个人,一个是他的小名,一个是他的大名,但是都是一个人,因此当我们改变变量self.x1的值时,理论上self.x2的值也是会改变的,因为我们将张三换成了李四,然而这里我们打印发现,仅仅self.x1的值发生了变化,它的标识也从140703956215952变为了140703956216016,而self.x2的值并未发生变换,并且它的标识还是原来的值,这是因为编译器自身对这个赋值进行了调整。
根据我的使用经验,当使用Anaconda编译器时,这个变量重新赋值的过程会被修正,改变一个变量的值是不会改变另一个变量的值的,但是Pycharm编译器中,改变一个变量的值是会改变另一个变量的值的。所以在使用链式赋值并且后面要对变量进行重新赋值时,要根据不同编译器的不同情况采取不同的措施,我估计python自带shell中的情况应该类似于Pycharm(没有尝试过)。
第五种:增强赋值,个人觉得这个只是个噱头,一个概念而已,我们会经常用到,只不过会很少注意到。代码如下:

class Debug:def __init__(self):self.x1 = 5 self.x1 += 2def printNum(self):print(f"the value of x1 is: {self.x1}") # the value of x1 is: 7if __name__ == "__main__":main = Debug()main.printNum()

上述代码中的 self.x1 += 2的专业术语就是增强赋值,其本身为 self.x1 = self,x1 + 2
如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

python 赋值方法大全相关推荐

  1. python 赋值方法_基于Python List的赋值方法

    Python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

  2. Python魔法方法大全

    Python魔法方法指南 Contents (译)Python魔法方法指南 简介 构造方法 操作符 比较操作符 数值操作符 一元操作符 常见算数操作符 反射算数运算符 增强赋值运算符 类型转换操作符 ...

  3. [转载] python 字符串方法大全

    参考链接: Python字符串| rpartition 4.7.1.字符串方法 字符串实现所有常见的序列操作,以及下面描述的其他方法. 字符串还支持两种类型的字符串格式化的,一个提供了很大程度的灵活性 ...

  4. python+selenium 方法大全

    01 selenium 定位方法 1.1 WebDriver8 种基本元素定位方式 1)find_element_by_id() 根据 id 属性进行定位: 2)find_element_by_nam ...

  5. python字符串方法大全

    注意,python中 字符串是不可变对象 ,所以所有修改和生成字符串的操作的实现方法都是另一个内存片段中新生成一个字符串对象.例如, 'abc'.upper() 将会在划分另一个内存片段,并将返回的  ...

  6. python特殊方法大全_python中星号变量的几种特殊用法

    在Python中星号除了用于乘法数值运算和幂运算外,还有一种特殊的用法"在变量前添加单个星号或两个星号",实现多参数的传入或变量的拆解,本文将详细介绍"星号参数" ...

  7. python 字符串方法大全

    4.7.1.字符串方法 字符串实现所有常见的序列操作,以及下面描述的其他方法. 字符串还支持两种类型的字符串格式化的,一个提供了很大程度的灵活性和定制(见str.format(), 格式化字符串的语法 ...

  8. python+selenium方法大全

    一.selenium定位方法 1.WebDriver8种基本元素定位方式 1)find_element_by_id() 根据id属性进行定位 2)find_element_by_name() 根据na ...

  9. python魔术方法大全_python中魔术方法和属性汇总

    类定义后,便在内存中开辟空间存储类属性和所有的方法,其中类属性是以字典的形式进行存储.当实例化一个类时,即另开辟空间存储成员变量,以及定义变量__class__指向类的存储空间.对象中的私有变量也是可 ...

最新文章

  1. RNAseq-GO、biomaRt转换ID
  2. 如何选择漏电保护器规格型号_三相四线漏电保护器型号要如何选
  3. 内核启动流程—走马观花
  4. 浅析C++的三大循环-以100以内的质数求解为例
  5. mysql 高版本检索外键_第05期:外键到底能不能用?
  6. 在 Intellij IDEA 里使用 OpenJFX (JavaFX)
  7. python随机奇数_python怎么随机生成奇数
  8. Simple2D-24 Sprite 渲染树
  9. 谁先看到苏神咬人? 世界杯直播背后的云
  10. 504.七进制数(力扣leetcode) 博主可答疑该问题
  11. windows编程系列知识
  12. C#自动注册dll方法
  13. SpreadJS 15.2 英文版-Crack
  14. 坐标拾取器功能实现demo
  15. mysql列名变更_如何在MySQL中更改列名
  16. 使用Persepolis Download Manager多线程下载提升下载速度
  17. 网站域名解析为什么错误?域名解析错误怎么解决?
  18. telnet 不是内部或外部命令
  19. 从写下第1行代码到拿下谷歌百万年薪 ,我是如何在8个月内做到的?
  20. 教育培训行业市场营销推广方案分享

热门文章

  1. Jirafeau一键式文件共享软件安装教程
  2. vbs获取html内容,VBS获取网页内容
  3. VLN阅读报告1:Vision-and-Language Navigation综述(2022ACL)
  4. 【FPGA】Verilog 编码实现:与非门 | 或非门 | 异或门 | NAND/NOR/XOR 行为验证
  5. Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能
  6. python爬虫简单实例-爬取17K小说网小说
  7. [Linux]tomcat 严重: Could not contact localhost:80. Tomcat may not be running
  8. 一个小工具,助力企业开发如虎添翼
  9. Vimeo 开启VR内容付费模式,真的能让消费者主动掏钱包吗?
  10. 视频超分、图像超分常用数据集Vimeo90K的下载及处理