Python 基础知识2

目录

2.2 变量 Variables

2.2.1 变量的命名和使用

2.2.2 使用变量时避免命名错误

2.2.3 变量是标签(Labels)


2.2 变量 Variables

下面来尝试在 hello_world.py 中使用一个变量。在这个文件开头添加一行代码,并对第二行代码进行修改,如下所示:

message="Hello Python World!"
print(message)

在 Sublime Text 中 Ctrl+B 运行 这个程序,看看结果如何。你会发现,输出与以前相同:

Hello Python World!

我们添加了一个名为 message 的变量。每个变量都指向一个值(value) —— 与该变量相关联的信息。在这里,变量 message 指向的值为文本 "Hello Python World!"

添加变量导致 Python 解释器需要做更多工作。处理第一行代码时,它将变量 message 与文本 "Hello Python World!" 关联起来;处理第二行代码时,它将变量 message 关联的值打印到屏幕。

下面来进一步扩展这个程序:修改 hello_world.py, 使其再打印一条消息。为此,在 hello_world.py 中添加一个空行,再添加下面两行代码:

message="Hello Python world!"
print(message)
 
message="Hello Python Crash Course world!"
print(message)

现在如果运行这个程序,将看到两行输出:

Hello Python world!
Hello Python Crash Course world!

在程序中可随时修改变量的值,而 Python 将始终记录变量的最新值。

2.2.1 变量的命名和使用

在 Python 中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解。请务必牢记下述有关变量的规则。

  • 变量名只能包含字母、数字和下划线。变量名能以字母或下划线打头,但不能以数字打头。例如,可将变量命名为 message_1, 但不能将其命名为 1_message.
  • 变量名不能包含空格,但能使用下划线来分隔其中的单词。例如,变量名 greeting_message 可行,但变量名 greeting message 会引发错误。
  • 不要将 Python 关键字和函数名用作变量名,即不要使用 Python 保留用作特殊用途的单词,如 print.

Python 内置函数

abs()           delattr()   hash()          memoryview()    set()
all()           dict()      help()          min()           setattr()
any()           dir()       hex()           next()          slice()
ascii()         divmod()    id()            object()        sorted()
bin()           enumerate() input()         oct()           staticmethod()
bool()          eval()      int()           open()          str()
breakpoint()    exec()      isinstance()    ord()           sum()
bytearray()     filter()    issubclass()    pow()           super()
bytes()         float()     iter()          print()         tuple()
callable()      format()    len()           property()      type()
chr()           frozenset() list()          range()         vars()
classmethod()   getattr()   locals()        repr()          zip()
compile()       globals()   map()           reversed()      __import__()
complex()       hasattr()   max()           round()

将内置函数用作变量名时,不会导致错误,但将覆盖这些函数的行为(override the behavior of that function).

  • 变量名应既简短又具有描述性。例如,name 比 n 好,student_name 比 s_n 好,name_length 比 length_of_persons_name 好。
  • 慎用小写字母 l 和大写字母 O, 因为它们可能被人错看成数字 1 和 0.

要创建良好的变量名,需要经过一定的实践,在程序复杂而有趣时尤其如此。随着编写的程序越来越多,并开始阅读别人编写的代码,你将越来越善于创建有意义的变量名。


注意:就目前而言,应使用小写的 Python 变量名。虽然在变量名中使用大写字母不会导致错误,但是大写字母在变量名中有特殊含义,这将在之后的博文中进行讨论。


2.2.2 使用变量时避免命名错误

程序员都会犯错,而且大多数程序员每天都会犯错。虽然优秀的程序员也会犯错,但他们也知道如何高效地消除错误。下面来看一种你可能犯的错误,并学习如何消除它。

我们将有意地编写一些引发错误的代码。请输入下面的代码,包括其中拼写不正确的单词 mesage:

message="Hello Python Crash Course reader!"
print(mesage)

程序存在错误时, Python 解释器将竭尽所能地帮助你找出问题所在。程序无法成功运行时,解释器将提供一个 traceback. traceback 是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。下面是你不小心拼错了变量名时, Python 解释器提供的 traceback:

Traceback (most recent call last):
  File "D:\python_work\hello_world", line 2, in <module>
    print(mesage)
NameError: name 'mesage' is not defined

阅读上述 traceback 的各行,解释器指出,文件 hello_world.py 的第二行存在错误:

  File "D:\python_work\hello_world", line 2, in <module>

它列出了这行代码,旨在帮助你快速找出错误:

    print(mesage)

解释器还指出了它发现的是什么样的错误,它发现了一个名称错误(name error), 并报告打印的变量 mesage 未定义:Python 无法识别你提供的变量名。

NameError: name 'mesage' is not defined

名称错误通常意味着两种情况:要么是使用变量前忘记给它赋值,要么是输入变量时拼写不正确。

在这个示例中,第二行的变量名 message 遗漏了字母 s. Python 解释器不会对代码做拼写检查,但要求变量名的拼写一致。例如,如果在代码的另一个地方也将message 错误地拼写成了 mesage, 结果将如何呢?

mesage="Hello Python Crash Course reader!"
print(mesage)

在这种情况下,程序将成功运行!

Hello Python Crash Course reader!

编程语言要求严格,但并不关心拼写是否正确。因此,创建变量名和编写代码时,无须考虑英语中的拼写和语法规则。

很多编程错误都简单,只是在程序的某一行输错了一个字符。为找出这种错误而花费很长时间的大有人在。很多程序员天资聪颖、经验丰富,却为找出这种细微的错误花费数小时。你可能觉得这很好笑,但别忘了,在你的编程生涯中,经常会有同样的遭遇。

2.2.3 变量是标签(Labels)

变量常被描述为可用于存储值的盒子。在你刚接触变量时,这种定义可能很有帮助,但它并没有准确描述 Python 内部表示变量的方式。一种好得多的定义是,变量是可以赋给值的标签(labels), 也可以说变量指向特定的值。

刚学习编程时,这种差别可能意义不大,但越早知道越好。你迟早会遇到变量的行为出乎意料的情形,此时如果对变量的工作原理有准确的认识,将有助于搞清楚代码是如何运行的。


注意:要理解新的编程概念,最佳的方式是在程序中使用它们。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙珩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值