Python基本语法变量与对象

变量用于在Python程序中保存数据。在Python中,所有的数据都是对象,变量保存的是对对象的引用。

1、 变量命名规则

在Python3中,变量的命名规则如下。

  • 首字符必须是下划线、英文字母或其他Unicode字符,其他字符可以是下划线、英文字母、数字或其他Unicode字符。例如,_abc、速度、r_1等都是合法的变量名,而2abc、price$则不能作为变量名。
  • 变量名区分大小写。例如,Abc和abc是两个不同的变量。
  • ·禁止使用Python 保留字或关键字。保留字和关键字在Python中具有特殊意义,将保留字或关键字作为变量名会导致语法错误。除了命名规则外,Python还有一些变量使用惯例。
  • 首尾各有两个下划线的变量名通常为系统变量,具有特殊作用。例如,__int__、__doc__都是系统变量。
  • 默认情况下,以一个或两个下划线开头的变量(如_abc)不能使用“from...import*”语句从模块导入。
  • 以两个下划线开头的变量(如__abc)是类的私有变量。

 2、赋值语句

赋值语句用于将数据赋值给变量。Python 支持多种格式的赋值语句:简单赋值、序列赋值、多目标赋值和增强赋值等。

1、简单赋值

简单赋值用于为一个变量赋值,示例代码如下。

x = 100

2、序列赋值

序列赋值可以一次性为多个变量赋值。在序列赋值语句中,等号左侧是用元组或列表表示的多个变量,等号右侧是用元组、列表或字符串等序列表示的数据。Python 按先后顺序依次将数据赋值给变量,示例代码如下。

>>> x,y=1,2            #直接为多个变量赋值
>>> x
1
>>> y
2
>>> (x,y)=10,20        #为元组中的变量赋值
>>> x
10
>>> y
20
>>> [x,y]=30,'abc'     #为列表中的变量赋值
>>> x
30
>>> y
'abc'

当等号右侧为字符串时,Python 会将字符串分解为单个字符,依次赋值给各个变量。此时,变量个数与字符个数必须相等,否则会出错,示例代码如下。

>>> (x,y)='ab'             #用字符串为元组中的变量赋值
>>> x
'a'
>>> y
'b'
>>> ((x,y),z)='ab','cd'    #用嵌套的元组为变量赋值
>>> x
'a'
>>> y
'b'
>>> z
'cd'
>>> (x,y)='abc'            #字符个数与变量个数不一致,出错
Traceback (most recent call last):
  File "<stdin>", line 1, in cmodule>
ValueError; too many values to unpack (expected 2)

序列赋值时,可以在变量名之前使用“*”,不带“*”的变量仅匹配一个值,剩余的值作为列表赋值给带“*”的变量,示例代码如下。

>>> x,*y='abcd'            #将第一个字符赋值给x,剩余字符作为列表赋值给y
>>> x
'a'
>>> y
['b','c','d']
>>> *x,y='abcd'            #将最后一个字符赋值给y,其他字符作为列表赋值给x
>>> x
['a','b','c']
>>> y
'd'
>>> x,*y,z='abcde'         #将第一个字符赋值给×,最后一个字符赋值给z,其他字符作为列表赋值给y
>>> x
'a'
>>> y
['b','c','d']
>>> z
'e'
>>> x,*y=[1,2,'abc',汉字'] #将第一个值赋值给×,其他值作为列表赋值给y
>>> x
1
>>> y
[2,'abc','汉字']

3、多目标赋值

多目标赋值指用连续的多个等号将同一个数据赋值给多个变量,示例代码如下。

>>> a=b=c=10          #将10赋值给变量a、b、c
>>> a,b,c
(10,10,10)

等价于:

>>> a=10
>>> b=a
>>> c=b

4、增强赋值

增强赋值指将运算符与赋值相结合的赋值语句,示例代码如下。

>>> a=5
>>> a+=10          #增强赋值,等价于a=a+10
>>> a
15

Python 中的增强赋值运算符如表所示。

+=

-=

*=

**=

//=

&=

|=

^=

>>==

<<=

/=

%=

3、变量与对象

​因为Pxthon 将所有的数据都作为对象来处理,赋值语句会在内存中创建对象和变量,以下面的赋值语句为例。

x = 5

Python 在执行该语句时,会按顺序执行3个步骤:首先,创建表示整数 5的对象;其次,检查变量×是否存在,若不存在则创建变量×;最后,建立变量×与整数对象5的引用关系。

下图说明了变量×和对象-5之闻的关系。

在Python中使用变量时,必须理解下面几点。

  • 变量在第一次赋值时被创建,再次出现时可以直接使用。
  • 变量没有数据类型的概念。数据类型属于对象,数据类型决定了对象在内存中的存储方式。
  • 变量引用对象。在表达式中使用变量时,变量立即被其引用的对象替代。所以在使用变量之前必须为其赋值。

示例代码如下。

>>> x=5            #第一次赋值,创建变量×,引用对象5
>>> print(x+3)     #变量×被对象5 替代,语句实际为print(5+3)
8

4、对象的垃圾回收​

当对象没有被引用时,其占用的内存空间会自动被回收——称为自动垃圾回收。Python为每一个对象创建→个计数器,记录对象的引用次数。当计数器为0时,对象被删除,其占用的内存被回收,示例代码如下。

>>> x=5            #第一次赋值,创建变量×,引用整数对象5
>>> type(x)        #实际执行type(5),所以输出整数对象5的数据类型
<class 'int'>
>>> x=1.5          #使变量×引用浮点数对象1.5,对象5被回收
>>> type(x)        #实际执行type(1.5)
<class 'float'>
>>> x='abc'        #使变量×引用字符串对象“abc”,对象1.5被回收
>>> type(x)        #实际执行type('abc')
<class 'str'>

Python 自动完成对象的垃圾回收,在编写程序时不需要考虑对象的回收问题。

可以使用del命令删除变量,释放其占用的内存资源,示例代码如下。

>>> a=[1,2,3]
>>> del a            #删除变量

​5、变量的共享引用

共享引用指多个变量引用了同一个对象,示例代码如下。

>>> x=5
>>> y=x             #种实际执行y=5,变量y与变量×同时引用整数对象5
>>> print(x,y)      #实际执行print(5,5)
5 5
>>> x=6             #变量×引用新的对象6,这不影响y对对象5的引用
>>> print(x,y)      #实际执行print(6,5)
6 5

在上面的代码执行过程中,变量和对象之间的引用变化如图所示。

将变量赋值给另一个变量时,将会使两个变量引用同一个对象。为变量赋予新的值,会使变量引用新的对象,原来的引用被删除。

当变量共享引用的对象是列表、字典或类的实例对象时,如果修改了被引用对象的值,那么所有引用该对象的变量获得的将是改变之后的对象值,示例代码如下。

>>> x=[1,2,3]
>>> y=x          #使y和x引用同一个列表对象[1,2,3]
>>> x
[1,2,3]
>>> y            #输出结果与x的输出相同
[1,2,3]
>>> x[0]=5       #通过变量×修改列表对象的第一项
>>> x            #通过变量×输出修改后的列表
[5,2,3]
>>> y            #通过变量y输出修改后的列表
[5,2,3]

在上面的代码执行过程中,变量和对象之间的引用变化如图所示。

可以用is操作符来判断两个变量是否引用了同一个对象。示例代码如下。

>>> x=5
>>> a=5
>>> a is x       #变量a和x引用同一个变量,结果为True
True
>>> b=a
>>> c=3
>>> a is b       #变量a和b引用同一个变量,结果为True
True
>>> a is c       #变量a和c引用不同变量,结果为False
False
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值