《Python从小白到大牛》第4章 Python语法基础
《Python从小白到大牛》已经上市!
本章主要为大家介绍Python的一些语法,其中包括标识符、关键字、常量、变量、表达式、语句、注释、模块和包等内容。
标识符和关键字
任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍Python标识符和关键字。
标识符
标识符就是变量、常量、函数、属性、类、模块和包等由程序员指定的名字。构成标识符的字符均有一定的规范,Python语言中标识符的命名规则如下:
区分大小写:Myname与myname是两个不同的标识符。
首字符,可以是下划线(_)或字母,但不能是数字。
除首字符外其他字符,可以是下划线(_)、字母和数字。
关键字不能作为标识符。
- 不要使用Python内置函数作为自己的标识符。
例如,身高、identifier、userName、User_Name、_sys_val等为合法的标识符,注意中文“身高”命名的变量是合法的;而2mail、room#、\$Name和class为非法的标识符,注意#和\$不能构成标识符。
关键字
关键字是类似于标识符的保留字符序列,由语言本身定义好的,Python语言中有33关键字。只有三个,即False、None和True首字母大写,其他的全部小写。具体内容见表4-1所示。
表 4‑1 Python关键字
False | def | if | raise |
---|---|---|---|
None | del | import | return |
True | elif | in | try |
and | else | is | while |
as | except | lambda | with |
assert | finally | nonlocal | yield |
break | for | not | |
class | from | or | |
continue | global | pass |
变量和常量
上一章中介绍了如何使用编写一个Python小程序,其中就用到了变量。常量和变量是构成表达式的重要组成部分。
变量
在Python中声明变量时不需要指定它的数据类型,只要是给一个标识符赋值就声明了变量,示例代码如下:
# 代码文件:chapter4/src/ch4.2.1.kt_hello = "HelloWorld" ①
score_for_student = 0.0 ②
y = 20 ③
y = True ④
代码第①行、第②行和第③行分别声明了三个变量,这些变量声明不需要指定数据类型,你赋给它什么数值,它就是该类型变量了。注意代码第④行是给y变量赋布尔值True,虽然y已经保存了整数类型20,但它也可以接收其他类型数据。
提示
Python是动态类型语言^1,它不会检查数据类型,在变量声明时不需要指定数据类型。这一点与Swift和Kotlin语言不同,Swift和Kotlin虽然在声明变量时也可以不指定数据类型,但是他们的编译器会自动推导出该变量的数据类型,一旦该变量确定了数据类型,就不能再接收其他类型数据了,这一点与Python不同。
常量
在很多语言中常量的定义是一旦初始化后就不能再被修改。而Python不能从语法层面上定义常量,Python没有提供一个关键字使得变量不能被修改。所以在Python中只能将变量当成常量使用,只是不要修改它。那么这就带来了一个安全隐患,可能会在无意中被修改,从而引发程序错误。解决此问题要么靠程序员自律和自查;要么通过一些技术手段使变量不能修改。
提示
Python作为解释性动态语言,代码安全很多情况下需要程序员自查的。而Java和C等静态类型语言,这些问题会在编译期检查出来。
注释
Python程序注释使用井号(#),使用时#位于注释行的开头,#后面有一个空格,接着是注释内容。
另外,在第3章还介绍过文档字符串,它也是一种注释,只是用来注释文档的,文档注释将在第5章详细介绍。
使用注释示例代码如下:
# coding=utf-8 ①
# 代码文件:chapter4/4.3/hello.py ②
# _hello = "HelloWorld" ③
# score_for_student = 0.0 ④y = 20y = "大家好"print(y) # 打印y变量 ⑤
代码①和②行#号是进行单号注释,#号也可连续注释多行见代码第③行\~第④行,可以在一条语句的尾端进行注释见代码第⑤行。注意代码①行#
coding=utf-8注释作用很特殊是设置Python代码文件的编码集,该注释语句必须放在文件的第一行或第二行才能有效。它还有替代写法:
#!/usr/bin/python
# -*- coding: utf-8 -*-
其中#!/usr/bin/python注释是在UNIX、Liunx和macOS等平台上安装多个Python版本时,具体指定哪个版本的Python解释器。
提示
在PyCharm工具中对连续多行的注释可以使用快捷键,具体步骤是:选择多行然后按住“Ctrl+斜杠”组合键进行注释。去掉注释也是按住“Ctrl+斜杠”组合键。注意
在程序代码中,对容易引起误解的代码进行注释是必要的,但应避免对已清晰表达信息的代码进行注释。需要注意的是,频繁的注释有时反映了代码的低质量。当觉得被迫要加注释的时候,不妨考虑一下重写代码使其更清晰。
语句
Python代码是由关键字、标识符、表达式和语句等内容构成,语句是代码的重要组成部分。
语句关注的代码执行过程,如if、for和while等。在Python语言中,一行代码表示一条语句,语句结束可以加分号,也可以省略分号。
示例代码:
# coding=utf-8
# 代码文件:chapter4/4.4/hello.py_hello = "HelloWorld"
score_for_student = 0.0; # 没有错误发生
y = 20name1 = "Tom"; name2 = "Tony" ①
提示
从编程规范的角度讲语句结束不需要加分号,而且每行至多包含一条语句。代码第①行的写法是不规范的,推荐使用:
name1 = "Tom"
name2
Python还支持链式赋值语句,如果需要为多个变量赋相同的数值,可以这样表示:
a = b = c = 10
这条语句是把整数10赋值给a、b、c三个变量。
另外,在if、for和while有代码块的语句中,代码块不是通过大括号来界定的,而是通过缩进,缩进在一个级别的代码是在相同的代码块中。
# coding=utf-8
# 代码文件:chapter4/4.4/hello.py_hello = "HelloWorld"
score_for_student = 10.0; # 没有错误发生
y = 20name1 = "Tom"; name2 = "Tony"# 链式赋值语句
a = b = c = 10if y > 10:print(y) ①print(score_for_student) ②
else:print(y * 10) ③
print(_hello) ④
代码第①行和第②行是一个同一个缩进级别,他们是在相同的代码块中。而代码第③行和第④行不是在同一个缩进级别中,他们是在不同的代码块中。
提示
一个缩进级别一般是一个制表符(Tab)或4个空格,考虑到不同的编辑器制表符显示的宽度不同,大部分编程语言规范推荐使用4个空格。
模块
Python中一个模块就是一个文件,模块是保存代码的最小单位,模块中可以声明变量、常量、函数、属性和类等Python程序元素。一个模块提供可以访问另外一个模块中的程序元素。
下面通过示例介绍模块的使用,现有两个模块:module1和hello。module1模块代码:
# coding=utf-8
# 代码文件:chapter4/4.5/module1.pyy = True
z = 10.10print('进入module1模块')
hello模块会访问module1模块的变量,hello模块代码:
# coding=utf-8
# 代码文件:chapter4/4.5/hello.pyimport module1 ①
from module1 import z ②y = 20print(y) # 访问当前模块变量y ③
print(module1.y) # 访问module1模块变量y ④
print(z) # 访问module1模块变量z ⑤
上述代码hello模块访问module1模块的变量y和z。为了实现这个目的,可以通过两种import语句导入模块module1中的代码元素:
import
\<模块名\>。代码第①行,这种方式会导入模块所有代码元素,访问时需要加“模块名.”,见代码第④行module1.y,module1是模块名,y是模块module1中的变量。- from \<模块名\> import
\<代码元素\>。代码第②行,这种方式会只是导入特定的代码元素,访问时不需要加“模块名.”,见代码第⑤行z变量,但是需要注意如果z变量在当前模块中也有时,z不能导入,即z是当前模块中的变量。
运行hello.py代码输出结果如下:
进入module1模块
20
True
10.1
从运行结果可见import语句会运行导入的模块,注意示例中使用了两次import语句,但只执行一次模块内容。
模块事实上提供一种命名空间(namespace)^2。同一个模块内部不能有相同名字的代码元素,但是不同模块可以,上述示例中的y命名的变量就是在两个模块中都有。
——引自于 维基百科 https://zh.wikipedia.org/wiki/命名空间
包
如果两个相同名字的模块,任何防止命名冲突呢?那就是使用(package),很多语言都提供了包,例如Java、Kotlin等,他们的作用都是一样的提供一种命名空间。
创建包
重构4.5节示例,现有两个模块hello,他们放在不同的包com.pkg1和com.pkg2中,如图4-1所示,从图中可见包是按照文件夹的层次结构管理的,而且每个包下面会有一个init.py文件,它告诉解释器这个这是一个包,这个文件内容一般情况下是空的,但可以编写代码。
既然包是一个文件夹加上一个空的init.py文件,那么开发人员就可以自己在资源管理器中创建包。笔者推荐使用PyCharm工具中创建,它会创建文件夹的同时还会创建一个空的init.py文件。
具体步骤:使用PyCharm打开创建的项目,右击项目选择New → Python
Package菜单,如图4-2所示,在弹出对话框中输入包名com.pkg,其中com是一个包,pkg是它的下一个层次的包,中间用点(.)符号分隔。
包导入
包创建好后,将两个模块hello放到不同的包com.pkg1和com.pkg2中。由于
com.pkg1的hello模块需要访问com.pkg2的hello模块中的元素。那么任何导入呢?事实上还是通过import语句,需要在模块前面加上包名。
重构4.5节示例,com.pkg2的hello模块代码:
# coding=utf-8
# 代码文件:chapter4/4.5/com/pkg2/hello.pyy = True
z = 10.10print('进入com.pkg2.hello模块')
com.pkg1的hello模块代码:
# coding=utf-8
# 代码文件:chapter4/4.5/com/pkg1/hello.pyimport com.pkg2.hello as module1 ①
from com.pkg2.hello import z ②y = 20print(y) # 访问当前模块变量y
print(module1.y) # 访问com.pkg2.hello模块变量y ③
print(z) # 访问com.pkg2.hello模块变量z
代码第①行是使用import语句com.pkg2.hello模块所有代码元素,由于com.pkg2.hello模块名hello与当前模块名冲突,因此需要as
module1语句为com.pkg2.hello模块提供一个别名module1,访问时需要使用module1.前缀。
代码第②行是导入com.pkg2.hello模块中z变量。from com.pkg2.hello import
z语句可以带有别名,该语句修改为如下代码:
from com.pkg2.hello import z as x
print(x) # 访问com.pkg2.hello模块变量z
使用别名的目的是防止发生命名冲突,也就是说要导入的z名字的变量在当前模块总已经存在了,所以给z一个别名x。
本章小结
本章主要介绍了Python语言中最基本的语法,首先介绍了标识符和关键字,读者需要掌握标识符构成,了解Python关键字。然后介绍了Python中的变量、常量、注释和语句。最后介绍了模块和包,其中理解模块和包的作用,熟悉模块和包导入方式。
配套视频
http://edu.51cto.com/sd/f907b
配套源代码
http://www.zhijieketang.com/group/8
电子书
https://yuedu.baidu.com/ebook/5823871e59fafab069dc5022aaea998fcc2240fc
作者微博:@tony_关东升br/>邮箱:eorient@sina.com
智捷课堂微信公共号:zhijieketang
Python读者服务QQ群:628808216
《Python从小白到大牛》第4章 Python语法基础相关推荐
- 《Python从小白到大牛》第6章 数据类型
<Python从小白到大牛>已经上市! 在声明变量时会用到数据类型,在前面已经用到一些数据类型,例如整数和字符串等.在Python中所有的数据类型都是类,每一个变量都是类的"实例 ...
- 《Python从小白到大牛》第7章 运算符
<Python从小白到大牛>已经上市! 本章为大家介绍Python语言中一些主要的运算符(也称操作符),包括算术运算符.关系运算符.逻辑运算符.位运算符和其他运算符. 算术运算符 Pyth ...
- 《Python从小白到大牛》第5章 Python编码规范
<Python从小白到大牛>已经上市! 俗话说:"没有规矩不成方圆".编程工作往往都是一个团队协同进行,因而一致的编码规范非常有必要,这样写成的代码便于团队中的其他人员 ...
- 《Python从小白到大牛》第1章 开篇综述
<Python从小白到大牛>已经上市! Python诞生到现在已经有20多年了,但是Python仍然是非常热门的编程语言之一,很多平台中使用Python开发.表1-1所示的是TIOBE社区 ...
- 《Python从小白到大牛》简介
<Python从小白到大牛>已经上市! 本书是一部系统论述Python编程语言.OOP编程思想以及函数式编程思想的立体化教程(含纸质图书.电子书.教学课件.源代码与视频教程).为便于读者高 ...
- python从小白到大牛百度云盘_Python从小白到大牛
<Python从小白到大牛>是一部系统论述 Python编程语言. OOP编程思想以及函数式编程思想的立体化教程(含图书.答疑服务.教学课件.源代码及视频教程). <Python从小 ...
- 买《Python从小白到大牛》专题视频课程,送配套纸质图书
经过一年多时间的呕心沥血,Python立体化图书--<Python从小白到大牛>即将与大家见面了.所谓立体化图书包括:电子图书.视频.课件和服务等内容. 该书是PyCharm厂家JetBr ...
- 《Python从小白到大牛》第2篇 开发环境搭建
<Python从小白到大牛>已经上市! 开发环境搭建 <论语•魏灵公>曰:"工欲善其事,必先利其器",做好一件事,准备工作非常重要.在开始学习Python技 ...
- python视频课程推荐-《Python从小白到大牛》全集视频课程介绍
python全集.jpg 本视频课程是<Python从小白到大牛>图书配套视频.视频课程共分为8部分: 第1部分Python基础: Python语言历史,Python语言的特点,开发环境的 ...
最新文章
- 分布式与人工智能课程(part3)--第三课
- 分布式部署_Apache Spark探秘:三种分布式部署方式比较
- 错误 4 error C2220: 警告被视为错误 - 没有生成“object”文件
- 使用mfc修改窗口背景,图表
- 27.go list
- 药店管理系统/APP/小程序/网站
- 阿里云服务器如何登录?阿里云服务器的三种登录方法
- wpa_supplicant详解
- 如何查询计算机上次登录时间,怎么查看电脑的上一次开机时间
- 娱乐圈有缘无份的明星
- 金蝶 系统服务器繁忙,金蝶登录时提示云服务器繁忙
- 电商群雄角逐中国会员经济红利,谁能拔得头筹?
- Python利用Matplotlib绘图无法显示中文字体的解决方案
- linux强制退出进程
- 待我君临天下,定许你一世繁华。
- php易盾,内容审核统一管控!网易易盾智能审核管理系统开放试用
- 中国提取市场趋势报告、技术动态创新及市场预测
- 在线进行去除图片水印
- 招行数据岗笔试题- 信用卡推荐客户列表
- React-router(8)Link 标签 to 属性为对象时(路由信息传值)
热门文章
- 百科知识 .tar.xz文件如何打开
- 2012-4-2 通过MdiParent设置窗体最前
- 在eclipse中将项目发布到tomcat的root目录
- SQL Server中数据的修改是如何落盘的?
- 将socket设置为非阻塞(non-blocking) - 艾子的日志 - 网易博客
- linux nmon
- [转]Effective C# 原则5:始终提供ToString()
- 今天看到的如何做个坏男人的招数
- 《.Net框架程序设计》读书笔记 之 结构和索引器
- python求无序列表中位数_python 实现在无序数组中找到中位数方法