栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 赋值方法大全

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 赋值方法大全

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

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


if __name__ == "__main__":
    main = Debug()
    main.printNum()

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

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


if __name__ == "__main__":
    main = Debug()
    main.printNum()

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

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


if __name__ == "__main__":
    main = Debug()
    main.printNum()

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

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


if __name__ == "__main__":
    main = Debug()
    main.printNum()

然而上述的赋值方法存在隐患,先说明一下id()函数的作用:
id(): 函数返回对象的标识。 这是给定对象唯一的整数,并且在其生存期内保持不变。
我们可以看到当我们完成链式赋值时,此时变量self.x1与self.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 += 2
    
    
    def printNum(self):
        print(f"the value of x1 is: {self.x1}") # the value of x1 is: 7


if __name__ == "__main__":
    main = Debug()
    main.printNum()

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/834027.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号