博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python的变量声明
阅读量:6961 次
发布时间:2019-06-27

本文共 1887 字,大约阅读时间需要 6 分钟。

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

图片描述

Example 1. 定义 myParams 变量

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

首先注意缩进。 if 语句是代码块,需要像函数一样缩进。

其次,变量的赋值是一条被分成了多行的命令,用反斜线 (“ ”) 作为续行符。
整理编辑,转载说明出处!

1、书写多行命令

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

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

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

2、变量引用

Example2. 引 用 未 赋 值 的变 量

>>> xTraceback (innermost last):File "
", line 1, in ?NameError: There is no variable named 'x'>>> x = 1>>> x1

迟早有一天您会为此而感谢 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>>> TUESDAY1>>> SUNDAY6

(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培训

你可能感兴趣的文章
***的免杀技术
查看>>
Java 图像的模糊与锐化
查看>>
filter实际运用 appScan扫描漏洞处理
查看>>
原创:keil各种错误原因和解决方案--不间断更新
查看>>
cisco 2950使用经验。
查看>>
7月10日垃圾邮件报告:广东居十大垃圾邮件发送地之首
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
全面剖析 Knative Eventing 0.6 版本新特性
查看>>
流,用声明性的方式处理数据集 - 读《Java 8实战》
查看>>
【翻译】How To Become A Blockchain Developer: Crash Course! 区块链开发指南!
查看>>
linux修改或者配置IP地址、网络YUM源(针对Centos)
查看>>
MVC Cookie的使用
查看>>
mysql主从配置
查看>>
Linux 消耗CPU和内存的代码段----测试用的
查看>>
VMware与Hyper-V不兼容
查看>>
OSX加载驱动提示invalid signature
查看>>
第0篇.C++开发环境介绍
查看>>
Ubuntu 源代码阅读和函数、变量的定位--之一
查看>>
Java - Keywords 基本数据类型 Identifier
查看>>
我的友情链接
查看>>