Python基础语法-常量与变量

简介:
95895baf377af036ef08732c74a7bd4edaeecd5b

Python是一门强类型的动态语言。

字面常量,变量没有类型,变量只是在特定的时间指向特定的对象而已,变量所指向的对象是有类型的。

变量:变量在赋值时被创建,它可以是任何对象的引用,但必须在引用前被赋值。

举例来说:当我们如下赋值时:

a = 3 # 给一个对象3赋予变量a

对于上面的赋值,Python将会明确的执行3个步骤来响应这个语句: 
创建一个对象代表值3; 
如果不存在变量a,就创建变量a; 
把变量a与新创建的对象3关联。 
变量随着赋值操作出现的。变量和对象是被存储在不同的内存空间中的。变量与对象通过指针相关联。变量永远指向对象且永不指向变量。随着赋值a = 3语句的执行,变量a就变成了对象3的一个引用。

如果你想学习Python可以来这个群,首先是472,中间是309,最后是261,里面可以学习和交流,也有资料可以下载。

变量与对象之间的链接在Python中称之为引用。也就是说,一个引用也就是一种关联,在内存中以指针的形式实现。

变量、对象与引用的区别: 
+ 变量 是Python解释器系统表中的一些条目, 它们是用来指向对象的。 
+ 对象 是一些列的被分配的内存, 有足够的空间存储与之相关的数据类型。 
+ 引用 自动地跟随在变量与对象之间。

对象才有类型, 而变量没有。一个例子:

a = 3 # a是一个整型数据 
a = ‘spam’ # 现在是一个字符串了 
a = 1.23 # 现在是一个浮点数了

在Python中,事情工作的很简单,再次强调:Names没有类型;只有对象有类型,而不是变量。

变量的命名规则: 
只能包含字母、数字和下划线 
只能以字母或下划线开头 
不能是Python解释器的保留字

共享引用

接下来我们看两个变量同时指向一个对象的情况:

a = 3 
b = a

现在,假设我们再进行如下的赋值语句:

a = 3 
b = a 
a = ‘spam’

现在变量a指向的对象spam。然而变量b却依然指向对象3。赋值意味着创建了新的对象。

共享引用与原地改变

接下来要看的是有一些对象会进行原地改变,那就是Python的可变对象,包括列表,字典及集合。对于一个支持原地改变的对象,我们需要知道共享引用,如果一个改变会影响其他的对象。还是看个例子吧:

L1 = [2, 3, 4] 
L2 = L1

L1是一个列表且包含2、3、4三个对象。列表中的元素通过它们的位置进行访问,所以L1[0]指向对象2,它是列表L1的第一个对象。当然列表也是一个对象,就像其他的整数与字符串。当进行上面的两个赋值后,L1与L2都指向了同一个共享的对象。

现在,我们进行如下的赋值:

L1 = 24

这个赋值语句简单地把L1指向了不同的对象;L2依然指向原来的列表。接下来我们进行一些改变:

L1 = [2, 3, 4] # 一个可变的对象 
L2 = L1 # L2与L1指向了同样的对象 
L1[0] = 24 # 一个原地改变的操作 
L1 # L1已经改变了 
[24, 3, 4] 
L2 # L2也是与L1相同 
[24, 3, 4]

上面的例子中,我们并没有改变L1对象本身,只是改变了L1中的一个对象。这种原地改变的操作的情况只出现在可变对象中。举个字典的例子:

d1 = {‘a’: 1, ‘b’: 2} 
d2 = d1 
d1 
{‘b’: 2, ‘a’: 1} 
d2 
{‘b’: 2, ‘a’: 1} 
d1[‘a’] = ‘a’ 
d2 
{‘b’: 2, ‘a’: ‘a’}

我们可以使用copy的方法:

L1 = [2, 3, 4] 
L2 = L1[:] # 制作L1的拷贝 
L1[0] = 24 
L1 
[24, 3, 4] 
L2 # L2并没有改变 
[2, 3, 4]

通过上面的例子我们发现,L1的改变并没有影响L2,L2只是引用了L1的一份拷贝,并不是原来的L1自身,也就说,L1与L2指向了两个不同的内存空间。

接下来谈论另外一个话题,Python会缓存小的整数及小的字符串。举个例子吧:

L = [1, 2, 3] 
M = L # M与L指向相同的对象 
L == M # 具有相同的值 
True 
L is M # 依然相同 
True 
id(L) 
4338913608 
id(M) 
4338913608

通过上面的例子,==判断两个引用的对象是否有相同的值;第二个操作符is是用来判断对象id的,只有两个names指向相同的对象,is比==判断对象是否相同更强壮。is只是简单地比较两个对象的指针。再看一个例子:

L = [1, 2, 3] 
M = [1, 2, 3] # M与L指向不同的对象(赋值意味着产生新的对象) 
L == M # 具有相同的值 
True 
L is M # 但是是不同的对象 
False 
id(L) 
4338913480 
id(M) 
4338915208

接下来呢,我们看看对于小数字的操作是否不符合上面的预期:

X = 42 
Y = 42 # X与Y应该是两个不同的对象 
id(X) 
4297547872 
id(Y) 
4297547872 
X == Y 
True 
X is Y # but anyhow: 是缓存在作祟! 
True 
使用个大的数字呢? 
X = 1234567 
Y = 1234567 
X == Y 
True 
X is Y 
False 
id(X) 
4336930640 
id(Y) 
4338529328


相关文章
|
18天前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
48 4
|
8天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
11 2
|
10天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
21 4
|
14天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
28天前
|
存储 Java 编译器
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
这篇文章是关于Python编程语言中变量命名规则、基本数据类型、算数运算符、比较运算符、逻辑运算符、赋值运算符以及格式化输出与输入的详细教程。
18 0
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
|
26天前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。
WK
|
27天前
|
Python
Python变量命名
在Python编程中,变量命名对代码的可读性和维护性至关重要。遵循PEP 8风格指南,变量名应使用小写字母和下划线分隔单词,保持简洁明了、描述性强,避免使用单字母、Python关键字和内置函数名,采用有意义的缩写,使用英文命名,保持命名风格一致,避免魔法数字,考虑上下文。正确示例:`user_name`、`order_quantity`;不正确示例:`n`、`q`。
WK
17 0
|
27天前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
16 0
|
28天前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
24 0
|
3月前
|
存储 数据采集 人工智能
一:《Python基础语法汇总》— 变量与数据类型
【8月更文挑战第15天】本篇文章详细讲述了关于变量的命名规范,id()函数及Python的数据类型与强制转换
25 2

热门文章

最新文章