Python的变量声明

比特紫霄引
• 阅读 1268

Python 与大多数其它语言一样有局部变量和全局变量之分,但是它没有明显的变量声明。变量通过首次赋值产生,当超出作用范围时自动消亡。

Python的变量声明

Example 1. 定义 myParams 变量

if __name__ == "__main__":
myParams = {"server":"mpilgrim", \
"database":"master", \
"uid":"sa", \
"pwd":"secret" \
}

首先注意缩进。 if 语句是代码块,需要像函数一样缩进。
其次,变量的赋值是一条被分成了多行的命令,用反斜线 (“ ”) 作为续行符。
上海python培训整理编辑,转载说明出处!

1、书写多行命令
当一条命令用续行符 (“ ”) 分割成多行时,后续的行可以以任何方式缩进,此时 Python 通常的严格的缩进规则无需遵守。如果您的 Python IDE 自由对后续行进行了缩进,您应该把它当成是缺省处理,除非您有特别的原因不这么做。

严格地讲,在小括号,方括号或大括号中的表达式 (如定义一个 dictionary ) 可以用或者不用续行符 (“ ”) 分割成多行。甚至在不是必需的时候,我也喜欢使用续行符,因为我认为这样会让代码读起来更容易,但那只是风格问题。

您从未声明过变量 myParams ,您只是给它赋了一个值。这点就像是VBScript 没有设置 option explicit 选项一样。幸运的是,与 VBScript 不同,Python 不允许您引用一个未被赋值的变量,试图这样做会引发一个异常。

2、变量引用
Example2. 引 用 未 赋 值 的变 量

>>> x
Traceback (innermost last):
File "<interactive input>", line 1, in ?
NameError: There is no variable named 'x'
>>> x = 1
>>> x
1

迟早有一天您会为此而感谢 Python 。

3、一次赋多值
Python 中比较 “酷” 的一种编程简写是使用序列来一次给多个变量赋值。

Example 3. 一次赋 多值

>>> v = ('a', 'b', 'e')
>>> (x, y, z) = v (1)
>>> x
'a'
>>> y
'b'
>>> z
'e'

(1) v 是一个三元素的 tuple,并且 (x, y, z) 是一个三变量的 tuple。将一个 tuple赋值给另一个 tuple,会按顺序将 v 的每个值赋值给每个变量。

这种用法有许多种用途。我经常想要将一定范围的值赋给多个变量。在 C 语言中,可以使用 enum 类型,手工列出每个常量和其所对应的值,当值是连续的时候这一过程让人感到特别繁琐。而在 Python 中,您可以使用内置的 range函数和多变量赋值的方法来快速进行赋值。

Example 4. 连 续值赋值

>>> range(7) (1)
[0, 1, 2, 3, 4, 5, 6]
>>> (MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)
(2)
>>> MONDAY (3)
0
>>> TUESDAY
1
>>> SUNDAY
6

(1) 内置的 range 函数返回一个元素为整数的 list。这个函数的简化调用形式是接收一个上限值,然后返回一个初始值从 0 开始的 list,它依次递增,直到但不包含上限值。(如果您愿意,您可以传入其它的参数来指定一个非 0的初始值和非 1 的步长。也可以使用 print range.__doc__ 来了解更多的细
节。)

(2) MONDAY 、 TUESDAY 、 WEDNESDAY 、 THURSDAY 、 FRIDAY 、 SATURDAY 和 SUNDAY 是我们定义的变量。(这个例子来自 calendar 模块。它是一个很有趣的打印日历的小模块,像 UNIX 的cal命令。这个calendar 模块定义了一星期中每天的整数常量表示。)

(3) 现在每个变量都拥有了自己的值: MONDAY的值为0 , TUESDAY的值为1 ,等等。

您也可以使用多变量赋值来创建返回多个值的函数,只要返回一个包含所有值的 tuple 即可。调用者可以将其视为一个 tuple,或将值赋给独立的变量。许多标准的 Python 库都是这样做的,包括os模块。

感谢阅读,欢迎评论,更多内容或及时获取支持请访问 上海python培训

点赞
收藏
评论区
推荐文章
菜园前端 菜园前端
2年前
为你解惑JS作用域和作用域链知识
原文链接:变量作用域一个变量的作用域(scope)是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在JavaScript代码中的任何地方都是可以访问的。然而在函数内声明的变量只能在函数体内访问,它们是局部变量,作用域是局部性的。函数参数也是局部变
Jacquelyn38 Jacquelyn38
4年前
你所知道的JS变量作用域
变量的作用域,指的是变量在脚本代码中的可读、可写的有效范围,也就是脚本代码中可以使用这个变量的区域。在ES6之前,变量的作用域主要分为全局作用域、局部作用域(也称函数作用域)两种;在ES6及其之后,变量的作用域主要分为全局作用域、局部作用域、块级作用域这3种。相应作用域变量分别称为全局变量、局部变量、块级变量。全局变量声明在所有函数之外;局部变量是在函数体内
九路 九路
2年前
Go语言变量
Go语言变量和数学中的变量概念一样,变量有名字,有值,通过名字访问变量。在计算机编程语言的世界里,变量就是一块内存区域,通过名字,对这块内存区域进行赋值等操作。1Go语言变量的命名规则Go语言的变量命名规则和其它语言一样:由字母,数字,下划线组成注意:变量
Wesley13 Wesley13
3年前
001 Python中的变量和字符串
1.Python“变量”更像“名字”变量名就像我们现实社会的名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable)。在大多数语言中,都把这种行为称为“给变量赋值”或“把值存在变量中”。不过Python与大多数其他计算机语言的做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在值
Wesley13 Wesley13
3年前
IOS全局变量
IOS中的全局变量和JAVA中的全局变量定义和使用方法不一样,在Java中,只需要将变量定义为static就行了。而在IOS中这种方法不适合。IOS中定义全局变量有三种方法:1.使用extern关键字在AppDelegate.m或AppDelegate.h中写入你需要的全局变量名,例如:int name;注意定义全局变量时候不能初始化,否则报错
Wesley13 Wesley13
3年前
ES 6新语法
一、块级作用域绑定回顾:使用var关键字定义变量定义  声明  赋值; 1. 可以一次定义多个变量 2. 定义时可以只声明不赋值 3. 定义之后可以随时修改变量的值 4. 变量声明会被提升 5. 可重复定义变量 6. 全局定义的变量会被作为全局对象(global/w
Wesley13 Wesley13
3年前
ES6的语法
一,定义变量let(类似var)在js一直有一个bug是var:1、var声明的变量会有变量提升console.log(name);//jhonvarname'jhon';2、var没有块级作用域varname2'jjjon';{varname2'tom';
Wesley13 Wesley13
3年前
Java连载7
一、变量1.注意点:在同一个“作用域”中,变量名不能重名,但是变量可以重新赋值。2.什么是作用域?答:描述的是变量的有效范围,在范围之内是可以被访问的,只要出了作用域就无法访问(也就是在大括号里面才行)3.关于变量的分类(1)局部变量:在方法体中声明的变量;(2)成员变量:在方法体外声明的变量。4.在不同的作用域中,变量名是可
Wesley13 Wesley13
3年前
C语言面试题大汇总之华为面试题 Eddy整理
1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用"::";局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。2、如何引用一个
Stella981 Stella981
3年前
Rust语言开发基础(六)基础语法
一、变量的定义和使用其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust使用关键字let。1\.变量绑定通过let实现fnmain(){letx5;}2\.变量可以是一种模式,自动匹配。let(x,y)(1,2);3\.
Stella981 Stella981
3年前
JavaScript 声明全局变量的三种方式
JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍。声明方式一:使用var(关键字)变量名(标识符)的方式在function外部声明,即为全局变量,否则在function声明的是局部变量。声明方式二:没有使用var,直接给标识符e赋值,这样会隐式的声明了全局变量e。即使该语句是在一个function内,当该funct