Python变量赋值方法

文章目录

    • 一、什么是赋值
    • 二、赋值类型
      • 1. 序列赋值
      • 2. 多目标赋值
      • 3. 增强赋值语句

一、什么是赋值

python的赋值是通过“=” 将右边的对象赋值给左边的变量,如:

a = 'test'		#将字符串赋值给变量a
a = 123			#将数值赋值给变脸a
a = [1,2,3]		#将列表赋值给变量a

通过上面的赋值测试,我们会发现变量a是没有类型的,而类型的区别只存在于右侧的对象中。故可以将各种类型的对象赋值给变量。在Python内部,对于赋值的实现,本质上是建立将变量指向对象的引用过程,并不是将对象进行复制的过程。赋值过程有以下三个特点:

  1. 赋值的过程是建立变量到对象的引用的过程
  2. 变量在首次赋值时被创建
  3. 变量在引用前必须先赋值

二、赋值类型

1. 序列赋值

python将=右侧序列的值依次和左侧的序列中的变量相互对应匹配,给每一个变量赋值,如:

a,b,c = [1,2,3]
a,b,c=(1,2,3)
(a,b,c)=1,2,3
(a,b,c)=[1,2,3]
a,b,c=1,2,3
*a,b = 1,2,3	#首先满足非*的变量,剩下的通过列表复制给待*的变量,如果没有剩下的值,那么列表为空。其典型应用详见小技巧4.

所谓序列赋值,指元组、列表这样的序列可以一次性对序列长度相等的变量进行赋值。数值必须相等。如下面的就要报错:

a,b=1,2,3
ValueError: too many values to unpack (expected 2)   

不仅仅是元组或列表,只要对象切好是可迭代的,那么就可以执行分解操作,如分解字符串、字典:

a,b,c,d,e = 'hello'

dct = {'a':1, 'b':2, 'c':3}
a,b,c = dct		#只是将字典中的key 复制给a,b,c

小技巧1:交换两变量的值:

a = 1
b = 1
a,b =b,a		#完成a,b值的交换

小技巧2:依次给变量赋值n个整数

a,b,c,d,e,f = range(6)

小技巧3:如果=两边长度不相等怎么处理呢?处理如下:
给需要单独处理的变量前加上*,此时在赋值时如果不能对应,那么就会通过将一个列表赋值给该变量,列表中的内容为按序多出来的对象或者空列表

a,b,c=1,2,3,4		#会报错
a,b,*c=1,2,3,4				#c为[3,4],a,b正常赋值
a,*b,c=1,2,3,4				#b为[2,3],a,c正常赋值
*a,b,c=1,2,3,4				#a为[1,2],b,c正常赋值
a,b,c,d,*e=1,2,3,4			#e将得到一个空列表

小技巧4:递归求和

P = [1, 10, 7, 4, 5, 9]			#求列表P中个元素之和		

def sum_p(items):
    head, *tail = items
    return head + sum(tail) if tail else head

sum_p(P)	#output: 36

2. 多目标赋值

就是对多个变量直接赋予一个初始值,如在程序开始前给多个计数器变量赋值为0:

a=b=c=d=e=0

此种方式赋值需要注意列表的可变性。

3. 增强赋值语句

截图如下了:
解释一个例子,其他都类似:

X += Y 本质是 X = X + Y,先求X+Y的和,再将其赋值给X

Python变量赋值方法_第1张图片

你可能感兴趣的:(Python,系统运维)