Python教程

Python基础篇(一)-- 十分钟学会基础语法

本文主要是介绍Python基础篇(一)-- 十分钟学会基础语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 1 Python简介
    • 1.1 精通一门编程语言的必要性
    • 1.2 Python是什么
    • 1.3 Python语言特点
    • 1.4 Python的应用领域
    • 1.5 Python编程环境搭建
    • 1.6 Python学习
  • 2 基础语法
    • 2.1 标识符
    • 2.2 关键字
    • 2.3 字符编码
    • 2.4 代码规范
    • 2.5 导入模块
    • 2.6 输入输出
    • 2.7 内建函数

1 Python简介

1.1 精通一门编程语言的必要性

        随着信息技术的发展,计算机技术应用越来越广泛,目前主流领域如下:

  • 科学计算:是现代计算机应用的一个重要领域;
  • 数据处理:用计算机来加工、管理与操作任何形式的数据资料,主要包括数据的采集、转换、分组、组织、计算、排序、存储、检索等;
  • 人工智能:用计算机来模仿人的智能,使计算机具有识别语言、文字、图形和进行推理、学习以及适应环境的能力;
  • 网络应用:在信息共享、文件传输、电子商务等领域迅速发展。
  • 辅助技术:用计算机辅助进行工程设计、产品制造、性能测试,可以使设计工作半自动化或自动化;
  • 过程控制:用计算机作为控制部件对单台设备或整个生产过程进行控制;

1.2 Python是什么

        Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字和一些标点符号,它具有比其他语言更有特色的语法结构。

  • Python 是一种 解释型语言:开发过程中没有了编译这个环节,类似于PHP和Perl语言;

  • Python 是 交互式语言:可以在一个 Python 提示符 >>> 后直接执行代码;

  • Python 是 面向对象语言:Python支持面向对象的风格或代码封装在对象的编程技术;

  • Python 是 初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到浏览器再到游戏。

编译型语言:通过专门的编译器,将所有源代码一次性转换成特定平台(Windows、Linux 等)执行的机器码(以可执行文件的形式存在)。
解释型语言:由专门的解释器,根据需要将部分源代码临时转换成特定平台的机器码。
想要了解更多,请参考:编译型语言和解释型语言的区别

1.3 Python语言特点

1、面向对象

        Python语言具有很强的面向对象特性,简化了面向对象的实现,它消除了保护类型、抽象类、接口等面向对象的元素,使得面向对象的概念更容易理解。

2、内置的数据结构

        Python提供了一些内置的数据结构,这些数据结构实现了类似Java中集合类的功能。内置数据结构的出现简化了程序设计。Python的数据结构包括元组、列表、字典、集合等。 元组相当于“只读”的数组,列表可以作为可变长度的数组使用,字典相当于Java中的HashTable类型。

3、简洁

        Python语言的关键字比较少,它没有分号、begin、 end等标记,代码块使用空格或Tab键缩进的方式来分隔。此外,Python代码简洁、短小、易于阅读。 Python简化了循环语句,即使程序结构很复杂也能快速读懂。

4、健壮

        Python提供了异常处理机制,能捕获程序的异常情况。 此外Python的堆栈跟踪对象能够指出程序出错的位置和出错的原因。异常机制能够避免不安全退出的情况,同时能够帮助程序员调试程序。

5、跨平台

        Python会先被编译为与平台相关的二进制代码,然后再解释执行。这种方式类似于Java,但Python的执行速度提高了。Python编写的应用程序可以运行在Windows、Unix、Linux等不同的操作系统上。 在一种操作系统上编写的Python代码只需做少量修改,就可移植到其他的操作系统上。

6、可扩展

        Python是采用C开发的语言,因此可以使用C扩展Python,可以给Python添加新的模块、新的类。同时Python可以嵌入C、C++语言开发项目中,使程序具备脚本语言的特性。因此,Python 又常被称为“胶水”语言。

7、动态性

        Python 与JavaScript、PHP、Perl等语言类似,它不需要另外声明变量、直接赋值即可创建一个新的变量。

8、强类型语言

        Python的变量创建后会对应一种类型,它可根据赋值表达式的内容决定变量的类型。Python在内部建立了管理这些变量的机制,不同类型的变量需要类型转换。

9、应用广泛

        Python语言应用于数据库、网络、图形图像、数学计算、Web开发、操作系统扩展等领域。 有许多第三方库支持Python,例如:PIL(图像处理库)、Tkinter(创建图形用户界面)、Django(交互式网站)、Pygame(2D动画)、SCIPy(科学计算)、Twisted(网络编程)等。

        Python的以上特性使得软件的代码大幅度减少,开发任务进一步简化,我们编程的关注点不再是语言特性,而是程序所要实现的任务。

1.4 Python的应用领域

        Python 通常应用于编写下述应用程序:

  • 脚本——这些简短的程序自动执行常见的管理任务,如在系统中新增用户、将文件上传到网站、在不使用浏览器的情况下下载网页等。
  • 网站开发——作为快速创建动态网站的工具,Django、Bottle和Tope等Python项目深受开发人员欢迎。
  • 文本处理——Python在字符串和文本文件处理方面提供了强大的支持。
  • 图像处理——如PIL库(目前已不再维护,取而代之的有Pillow)科学计算。网上有许多卓越的Python科学计算库,提供了用以统计、数学计算和绘图的函数。如:NumPy 。
  • 教育——鉴于Python简洁实用,越来越多的学习将其作为第一门编程教学语言。

        Python的主要运用领域有:

  • 云计算:云计算最热的语言,典型的应用OpenStack;
  • WEB应用开发:许多优秀的WEB框架,许多大型网站是Python开发、YouTube、Dropbox、Douban……典型的Web框架包括:Django、flask、TurboGears、web2py 等等;
  • 科学计算和人工智能:Python 在人工智能领域内的机器学习、神经网络、深度学习等方面,都是主流的编程语言, 此外,Python擅长进行科学计算和数据分析,支持各种数学运算,可以绘制出更高质量的 2D 和 3D 图像;
  • 自动化运维:系统操作和维护,通常情况下,Python 编写的系统管理脚本,无论是可读性,还是性能、代码重用度以及扩展性方面,都优于普通的 shell 脚本;
  • 金融:定量交易、金融分析,在金融工程领域,Python使用越来越广泛;
  • 图形 GUI:PyQT,WXPython,TkInter;
  • Python在网络爬虫、游戏开发、机器人控制编程等领域也有广泛应用。

1.5 Python编程环境搭建

  1. Window 平台安装 Python:打开浏览器访问:https://www.python.org/downloads/windows/ ,点击下载 executable installer,x86 表示是 32 位的安装程序,x86-64 表示 64 位的。详细安装过程,请参考:http://c.biancheng.net/view/4161.html

  2. Unix & Linux 平台安装 Python3:打开浏览器访问:https://www.python.org/downloads/source/,选择适用于 Unix/Linux 的源码压缩包,然后解压缩并安装。详细安装过程,请参考:http://c.biancheng.net/view/4162.html

  3. MAC平台安装Python3:打开浏览器访问:https://www.python.org/downloads/mac-osx/,下载最新版安装即可。

        安装完成之后,需要配置环境变量,详细过程可以参考:Python3 环境搭建

        此外,还推荐下载其他IDE进行Python编程,IDE 是 Intergreated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件。换言之,集成开发环境就是一系列开发工具的组合套装。 一般情况下,程序员可选择的 IDE 类别是很多的,比如说,用 Python 语言进行程序开发,既可以选用 Python 自带的 IDLE,也可以选择使用 PyCharm 和 Notepad++ 作为 IDE。

  • PyCharm下载和安装教程(包含Python解释器):http://c.biancheng.net/view/5804.html
  • Python Eclipse+PyDec下载和安装教程:http://c.biancheng.net/view/5810.html
  • Python VS Code下载和安装教程:http://c.biancheng.net/view/5813.html

1.6 Python学习

        下面推荐几篇内容不错的关于Python学习路线和不同方向的进阶教程,有时间可以对照一下,看看自己还有多长的路要走。

  1. Python学习路线(2021修正版)
  2. 致Python初学者
  3. python系列文章(基础,应用,后端,运维,自动化测试,爬虫,数据分析,可视化,机器学习,深度学习系列内容)
  4. 全网最全Python学习路线图+14张思维导图

2 基础语法

2.1 标识符

        标识符主要作用就是作为变量、函数、类、模块以及其他对象的名称,Python 中标识符的命名不是随意的,而是要遵守一定的命令规则, 如下:

  1. 标识符对大小写敏感,且第一个字符必须是字母表中字母或下划线 _ 。
  2. 标识符的其他的部分由字母、数字和下划线组成。
  3. 标识符不能和 Python 中的保留字相同。
  4. 标识符中不能包含空格、@、% 以及 $ 等特殊字符。

在Python中,以下划线开头的标识符有特殊含义,如下

  • 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from…import* 的方式导入;
  • 以双下划线开头的标识符(如__add)表示类的私有成员;
  • 以双下划线作为开头和结尾的标识符(如 init),是专用标识符。
    综上,除非特定场景需要,应避免使用以下划线开头的标识符。

        在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了,但我们应尽量避免使用汉字作为标识符,容易遇到奇葩的错误。

不同场景中的标识符,其名称也有一定的规范可循,具体如下:

  • 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
  • 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
  • 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
  • 模块内部的类名,可以采用 “下划线+首字母大写” 的形式,如 _Book;
  • 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;
  • 常量命名应全部使用大写字母,单词之间可以用下划线分割;

2.2 关键字

        关键字即保留字,我们不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字:

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 
'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 
'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

2.3 字符编码

        默认情况下,Python3源码文件以“可变长编码”的UTF-8编码,所有字符串都是unicode字符串。 UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。了解更多,可以参考:ASCII、GB2312、Unicode、UTF-8编码
        在Linux下为源码文件指定编码方式:

#!/usr/bin/python
# -*- coding: utf-8 -*-

2.4 代码规范

1、注释

        注释(Comments)用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。Python 解释器在执行代码时会忽略注释,不做任何处理,就好像它不存在一样。Python中单行注释以 # 开头,多行注释可以用多个#,也可以使用''''""",示例如下:

#!/usr/bin/python3

# 第一个注释
print("Hello World!")	 # 第二个注释

'''
第三个注释
第四个注释
'''

"""
第五注释
第六注释
"""

        注意: Python 多行注释不支持嵌套。

2、行与缩进

        Python最具特色的就是使用缩进来表示代码块,不需要使用大括号{ }缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数,通常情况下是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。 示例如下:

if True:
	print("True")
else:
	print("False")

像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。将首行及后面的代码组称为一个子句(clause)。

3、多行语句

        Python通常是一行写完一条语句,但如果语句很长,我们可以使用右反斜杠(\) 来实现多行语句,如下:

total = item_one + \
		item_two + \
		item_three

        在[],{},或()中的多行语句,不需要使用反斜杠(\),例如:

total = ['item_one', 'item_two', 'item_three',
					'item_four', 'item_five']

        Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,如下:

import math; print(math.pow(2, 4))

4、空行

        函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

        空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面列出PEP 8 中初学者应严格遵守的一些编码规则:

  1. 每个 import 语句只导入一个模块,尽量避免一次导入多个模块。
  2. 不要在行尾添加分号,也不要用分号将两条命令放在同一行。
  3. 建议每行不超过 80 个字符,如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。
  4. 使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。
  5. 通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

2.5 导入模块

        模块就是Python程序,在Python中导入模块后,我们就可以使用该模块里定义的类、方法或者变量,这样既可以提高代码的可重用性,又可以避免变量冲突,我们通常用 import 或者 from...import 来导入相应的模块。def一样,importfrom 是可执行的语句,他们可以出现在 if 中,可以出现在函数中,执行到这些语句的时候才会进行解析,换句话说,被导入的模块和变量名只有在对应的 importfrom 语句执行后才可以使用。

模块,可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。

1、import语句

        既可以一行导入单个模块,也可以一行内导入多个模块,这里以常用的 mathrandom 模块为例,具体如下:

import math				# 导入math整个模块
print(math.pi)			# 使用math模块名作为前缀来访问模块中的成员

        一次导入多个模块,多个模块之间用逗号隔开。

import math,random			# 导入math、random两个模块
print(math.pi)				# 输出π的近似值,十五位小数
print(random.random())		# 生成一个[0, 1.0)的随机小数

Python 不建议一行 import 所有模块,而是推荐用多行 import 来导入模块。更多的是出于操作便利性的原因,与代码本身无关,这样更易于阅读;更易于编辑;更易于维护。

import工作方式:Python会在两个地方寻找这个模块,第一个地方是在sys.path(可以运行代码import sys print(sys.path)查看),一般安装的Python库的目录都可以在sys.path中找到(要将Python的安装目录添加到电脑的环境变量),对于安装好的库,我们直接import即可。第二个地方就是运行文件所在的目录。如果在一个模块的顶层导入,那么它的作用域就是全局的;如果在函数中导入,那么它的作用域是局部的。 如果模块是被第一次导入,它将被加载并执行。

2、import-as

        导入整个模块时,也可以为模块指定别名。

import math as m		# 导入math整个模块,并制定别名为m
print(m.pi)				# 使用m模块别名作为前缀来访问模块中的成员

        在导入多个模块时,也可以为模块指定别名

import math as m, random as ran		# 导入math、random两个模块,并为math指定别名m,为random指定别名ran
print(m.pi)
print(ran.random())

3、from-import

        下面使用 from...import 导入指定成员,即把指定成员导入到当前作用域,

from math import pi		# 导入math模块的pi成员
print(pi)				# 使用导入成员的语法,直接使用成员名访问

        导入模块成员时,也可以为成员指定别名。

from math import pi as P	# 导入math模块的pi成员,并指定别名P
print(P)					# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问

        form...import 导入模块成员时,支持一次导入多个成员,如下:

from math import pi, sqrt		# 导入math模块的pi,sqrt成员
print(pi)						# 使用导入成员的语法,直接使用成员名访问
print(sqrt(4))

        一次导入多个模块成员时,也可指定别名,同样使用 as 关键字为成员指定别名,

from math import pi as P, sqrt as sq		# 导入math模块的pi,sqrt成员,并为其指定别名P,sq
print(P)							# 使用导入成员(并指定别名)的语法,直接使用成员的别名访问
paint(sq(4)

        在使用 from...import 语法时,可以一次导入指定模块内的所有成员(存在不同模块,相同成员名的情况,从而发生冲突,此方式不推荐),如下:

from sys import *		# 导入math棋块内的所有成员
print(pi)				# 使用导入成员的语法,直接使用成员名访问
print(sqrt(4))

只在两种场合下建议使用这样的方法,一个场合是:目标模块中的属性非常多,反复键入模块名很不方便,例如 Tkinter (Python/Tk) 和 NumPy (Numeric Python) 模块,可能还有 socket 模块。另一个场合是在交互解释器下,这样可以减少输入次数。

2.6 输入输出

        input()是 Python 的内置函数,用于从控制台读取用户输入的内容。input()函数总是以字符串的形式来处理用户输入的内容,所以用户输入的内容可以包含任何字符。

s = input("请输入:")							# 数据以字符串的形式返回
number1 = eval(input("请输入数字:")	# eval()去掉" ",将字符串转化为有效的表达式,来求值,并返回计算结果,和str()功能刚好相反
number2 = val(input("请输入:"))		
'''val() 函数当识别到非数字,停止读入字符串,字符串中的空格和换行符会被去掉。即如果字符串内有字母或其他非数字字符,
val()函数只转换第一个非数字字符之前的数字。当字符串的首字符为非数字时,返回值为0。该函数也可以识别进制符号'''

        print() 默认输出是换行的,如果要实现不换行,需要在变量末尾加上 end=" ",输出多个变量时,print() 函数默认以空格隔开多个变量,想要使用不同的分隔符,可以使用缺省参数seq=':',可以通过help("print")了解更多。

print("****************")
print('{}网站:"{}"'.format('百度', 'www.baidu.com')	
# str.format()实现字符串格式化,大括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换
print('{0} 和 {1}'.format('GitHub', 'CSDN'))	# 括号中的数字用于指向传入对象在format()中的位置
print("你是:%s, %d岁" % ("CSDN", 22)				# % 操作符也可以实现字符串格式化
# 推荐使用str.format(),{}里可以添加可选项:和格式标识符,这样可以对值进行更好的格式化

%或者{}都可以看做转换说明符,转换说明符(Conversion Specifier)只是一个占位符,它会被后面表达式(变量、常量、数字、字符串、加减乘除等各种形式)的值代替。

1、%使用

表1 Python转换说明符
转换说明符解释
%d、%i转换为带符号的十进制整数
%o转换为带符号的八进制整数
%x、%X转换为带符号的十六进制整数
%e、%E转化为科学计数法表示的浮点数(输出e的大小写不一样)
%f、%F转化为十进制浮点数
%g、%G智能选择使用 %f 或 %e 格式
%c格式化字符及其 ASCII 码
%r使用 repr() 函数将表达式转换为字符串
%s使用 str() 函数将表达式转换为字符串

(1)整数的输出

>>> print('%o' % 24)		# 转换为八进制输出
30
>>> print('%d' % 24)
24

(2)浮点数的输出

  • %f ——默认保留小数点后面六位,例:%.3f,保留3位小数位
  • %e ——保留小数点后面六位有效数字,指数形式输出,例:%.3e,保留3位小数位,使用科学计数法
  • %g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法,例:%.3g,保留3位有效数字,使用小数或科学计数法
>>> print('%.2f' % 6.6666)		# 取3位小数
6.666
>>> print('%.3e' % 1.11)		# 取3位小数,用科学计数法
1.110e+00

(3)字符串输出

  • %10s——右对齐,占位符10位
  • %-10s——左对齐,占位符10位
  • %.2s——截取2位字符串
  • %10.2s——10位占位符,截取两位字符串
print('%10s' % 'hello')		# 右对齐,取10位,不够则补位
print('%-10.2s' % 'hello')  # 左对齐,取10位,并截取两位字符串,并用空格补位

2、format使用

(1)位置匹配

  • 不带编号,即“{}”
  • 带数字编号,可调换顺序,即“{1}”、“{2}”
  • 带关键字,即“{key1}”、“{key2}”
>>> print('{0} {1} {0}'.format('hello', 'world'))						# 带数字编号,并打乱顺序
hello world hello
>>> print('{key1} {key2} {key1}'.format(key1='world', key2='hello'))	# 带关键字
world hello world

(2)格式转换

>>> print('{:b}'.format(2))			# 转换为二进制输出
10
>>> print('{:%}'.format(0.2))		# 将数值乘以100,然后以小数点保留六位格式打印,值后面会有一个百分号
20.000000%

(3)进阶用法

  • 指定小数精度和输出宽度
from math import pi
print('{0:8.4f}'.format(pi))		# 位置为0,最小宽度为8,小数点后4位;:m.nf表示宽度为m,小数位为n,m和n都可以不指定
print('{:10s}'.format('Hello'))		# 输出字符串的宽度至少为10
  • 指定对齐方式
    <——左对齐,>——右对齐,^——居中
print('{:^10s} and {:>10s}'.format('Github', 'CSDN'))		# 取10位居中,取10位右对齐
print('{:*^10}'.format('CSDN'))								# 使用*填充

        Python格式化输出,了解更多,请参考:%用法和format用法

2.7 内建函数

        Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。

内置函数与标准库函数的对比:内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是解释器的外部扩展,导入模块以后才能生效。一般来说,内置函数的执行效率要高于标准库函数。

        上一小节的 print() 函数就是内置函数,Python 解释器还提供了更多内置函数,以下按字母表顺序列出:

表2 Python3 内置函数
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()

        各个内置函数的具体功能和用法,可以查看:https://docs.python.org/zh-cn/3/library/functions.html

这篇关于Python基础篇(一)-- 十分钟学会基础语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!