Python 变量

简述

变量只不过是保留的内存位置,用于存储规定范围内的值。这意味着,在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,例如:整数、小数或字符串等。

  • 简述
  • 何为变量
  • 变量命名
  • 变量赋值
    • 变量的基本赋值
    • 变量的重新赋值
    • 为多个变量指定同一个值
    • 将多个值分配给多个变量

版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820

何为变量?

简单地说,变量就是给数据起一个名字。。。

托马斯·卡莱尔的经典语录中有这么一句话:生命不止,奋斗不息。

Cease to the struggle and cease to the life
-- thomas carlyle

激励了无数人,多么唯美励志。。。值得铭记一生!

青春我有,加油(^ω^),永远 18 岁。。。如果用 Python 表达的话,就是如下等式,一个名为 age 的变量被赋值为 18 。正如每个人都有姓名一样,变量的名字叫做标识符。

注意: 在很多语言中,声明变量必须要声明变量的类型。例如,要在 C++ 中声明一个整形变量,必须先声明变量的类型为 int,然后使用变量名以及变量对应的值。而在 Python 中,变量更多情况下是一种引用,对应的只是内存当中的一个值,该值可以根据需要存储不同的数据类型。

变量命名

变量可以任意取名,但必须遵循以下命名规则:

  • 由字母、数字、下划线(_)组成
  • 不能以数字开头
  • 不能使用 Python 关键字
  • 不能使用特殊符号,例如:!@#$%

例如,定义以下变量:

age = 18  // 正确
_age = 18  // 正确
age_18 = 18  // 正确
18_age = 18  // 错误,以数字开头
global = 18  // 错误,使用关键字 global
a@e = 18  // 错误,使用特殊符号 @

除此之外,还需要注意:

  • 变量对大小写敏感(区分大小写)

例如,定义以下变量:

AGE = 18  // 正确
age = 18  // 正确

AGE 和 age 是两个不同的变量,而非同一个。

建议: 变量名应做到见明知义,避免晦涩难懂。虽然可以是任意长度,但一般应确保精简、无歧义。

变量赋值

变量的基本赋值

变量是数据的引用,更像是标签。

例如,有一个 teacher 叫 Jack Ma,相当于将 teacher 这个标签拴在了 Jack Ma 上。通过这个 teacher,就顺延到了 Jack Ma,于是当我们叫 teacher 时,实际是在叫 Jack Ma,给人的感觉似乎 teacher 就是 Jack Ma,而事实上是 teacher 这个标签贴在了 Jack Ma 上。

>>> teacher = "Jack Ma"
>>> teacher
'Jack Ma'

在这里,teacher 标签就是所谓的变量,Jack Ma 就是该变量所对应的值,存储于内存中。

在 Python 中,有非常重要的一句话:对象有类型,变量无类型。 可以这样理解,就是标签不仅可以贴在整形类型的对象上,还可以贴在其他类型的对象上(例如:字符串)。变量的这个特点(随意贴标签)非常重要,它没有类型。

变量的重新赋值

变量,从字面意思理解就是变化的量,也就是说,数值是可变的。将变量从一个存储空间移至另一个存储空间中(也就是将标签移走,换到另一个位置),被称作变量的重新赋值。

例如,原来 teacher 叫 Jack Ma,后来年龄大退休了,换了一个老师叫 Pony,当我们再叫 teacher 时,其实叫的是 Pony,而非 Jack Ma。

>>> teacher = "Jack Ma"
>>> teacher
'Jack Ma'
>>> teacher = "Pony"
>>> teacher
'Pony'

一开始,相当于将 teacher 这个标签拴在了 Jack Ma 上,后来标签换了位置,拴在了 Pony 上。

如果学过其他编程语言,例如:C++,很容易想到的是 teacher 开辟了内存空间,里面存了 Jack Ma,然后这个空间当中又换为 Pony。就好比 teacher 是一个容器,里面放着值。实际在 Python 当中,正好相反,Python 是以数据为主,Jack Ma、Pony 都存储在内存当中,teacher 无非是对数据的一个引用。所以,当重新赋值后,查看 teacher 所对应的地址时,会发生变化。

每个对象在内存中都有对应的地址,这就是它的“身份”,使用 Python 的内建函数 id() 来查看:

>>> teacher = "JacK Ma"
>>> id(teacher)
140614944275064
>>> teacher = "Pony"
>>> id(teacher)
140614944310192

可以看到,重新赋值后,teacher 对应的内存空间已经变了。所以,JacK Ma 和 Pony 实际上存储在两个空间中。

为多个变量指定同一个值

同一个内存地址,可以有多个标签。这个很容易理解,一个人可以有多重身份,JacK Ma 既是 teacher,又是 ceo。

>>> ceo = teacher = "Jack Ma"

或者:

>>> teacher = "Jack Ma"
>>> ceo = teacher

看似不相关的变量,但他们指的都是同一个人 Jack Ma,不妨看一下:

>>> id(teacher)
140614944310360
>>> id(ceo)
140614944310360

显然,对应的是同一个内存地址。也就是说,teacher、ceo 是不同的标签,但是所引用的数据是同一地址上的。

将多个值分配给多个变量

要将多个值分配给多个变量,可以单独分开来写:

>>> age = 18
>>> teacher = "Jack Ma"

也可以连在一起:

>>> age, teacher = 18, "Jack Ma"

这里,值为 18 的整形分配给了变量 age,值为 “Jack Ma” 的字符串分配给了变量 teacher。

PS: Jack Ma 是马云,Pony 是马化腾 ~O(∩_∩)O哈哈~

时间: 2024-12-28 20:51:50

Python 变量的相关文章

python变量不能以数字打头详解_python

在编写python函数时,无意中发现一个问题:python中的变量不能以数字打头,以下函数中定义了一个变量3_num_varchar,执行时报错. 函数如下: def database_feild_varchar_trans(in_feild): ''' transfer the feild if varchar then 3times lang else no transfer ''' feild_split = in_feild.split(' ') is_varchar = feild_s

Python 变量类型及命名规则介绍_python

首字母为英文和下划线,其它部分则可以是英文.数字和下划线(即:_),而变量名称是区分大小写,即变量temp与Temp为不同变量.变量的基本用法如下: 复制代码 代码如下: # 例:使用变量a = 10b = 20print a + b>>> 30   # 输出a加b的值a = 'hello'b = 'python'print a + ' ' + b>>> hello python  # 输出a加b的值 上面几个例子是使用变量进行运算,python的变量可以分为数字.字符

Python变量/运算符/函数/模块/string

1.变量类型 Python 有五个内置的简单类型:bool.int.long.float 和 complex.这些类型是不可变的,就是说整数对象一旦创建,其类型便不可更改. type()函数可以用来判断一个变量的类型 定义变量时候,不需要明确表明这个变量是那种类型,系统会自动判断你所赋值的类型是什么 >>> a = 5 >>> type(a) <type 'int'> >>> b = 'word' >>> type(b)

python 变量作用域详细介绍

 在python中,变量查找遵循LGB原则,即优先在局部作用域(local scope)中对变量进行查找,失败则在全局作用域(global scope)中进行查找,最后尝试再内建作用域(build-in scope)内查找,如果还是未找到的话,则抛出异常.后来由于闭包和嵌套函数的出现,作用域又增加了外部作用域,这样变量的查找作用域优先级变为:局部.外部.全局和内建. 作用域由def.class.lambda等语句产生,if.try.for等语句并不会产生新的作用域.我们看下面的一个例子:  代码

深入探究Python中变量的拷贝和作用域问题

  这篇文章主要介绍了Python中变量的拷贝和作用域问题,包括一些赋值.引用问题,以及相关函数在Python2和3版本之间的不同,需要的朋友可以参考下 在 python 中赋值语句总是建立对象的引用值,而不是复制对象.因此,python 变量更像是指针,而不是数据存储区域, 这点和大多数 OO 语言类似吧,比如 C++.java 等 ~ 1.先来看个问题吧: 在Python中,令values=[0,1,2];values[1]=values,为何结果是[0,[...],2]? ? 1 2 3

Python基本语法_变量作用域LEGB

目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作用域 变量名解析LEGB法则 实例说明 对变量的引用 对变量的修改 global关键字 nonlocal关键字 命名空间和作用域的区别 软件系统 系统 Ubuntu 14.04 软件 Python 2.7.3 IPython 4.0.0 变量的作用域 在Python程序中创建.改变.查找变量名时,都

Python中的变量和作用域详解_python

作用域介绍 python中的作用域分4种情况: L:local,局部作用域,即函数中定义的变量: E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的: G:globa,全局变量,就是模块级别定义的变量: B:built-in,系统固定模块里面的变量,比如int, bytearray等. 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB. x = int(2.9) # int bu

《从问题到程序:用Python学编程和计算》——2.5 标识符、变量和赋值

2.5 标识符.变量和赋值 前面用表达式做的计算都是各自独立的,实际上是把Python用作一个简单计算器.在提示符下输入一个合法的表达式,解释器处理该表达式,得到一个结果.不同表达式的计算相互无关.显然,这种方式很有局限性,只能完成最简单的计算工作.复杂的计算可能需要经过许多步骤,每步做一点计算工作并记录得到的结果,再基于已得到的结果一步步继续工作下去.要实现这种计算方式,就要有记录计算结果的方法. 2.5.1 变量.名字和值 Python中记录计算结果的机制称为变量.一个变量有一个名字,在程序

python中星号变量的几种特殊用法_python

一.什么是星号变量 最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的*b位置上将其转化成元组,而双星号代表这个位置接收任意多个关键字参数,在**b位置上将其转化成字典: #!/usr/bin/env python #coding=utf-8 #-------- def one(a,*b): """a是一个普通传入参数,*b是一个非关键字星号参数""" print(b) one(1,2,