Python基础学习

Python 基础教程

[TOC]


Python简介

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。

Python 由 Guido van Rossum 于 1989 年底发明。像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。

  • Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
  • Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
  • Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 特点

  • 1.易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 2.易于阅读:Python 代码定义的更清晰。
  • 3.易于维护:Python的 成功在于它的源代码是相当容易维护的。
  • 4.一个广泛的标准库:Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX、Windows 和 Mac 兼容很好。
  • 5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片段。
  • 6.可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。
  • 7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。
  • 8.数据库:Python 提供所有主要的商业数据库的接口。
  • 9.GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。
  • 10.可嵌入: 你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得”脚本化”的能力。

Python下载

Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:

Python官网:https://www.python.org/

你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。

Python文档下载地址:https://www.python.org/doc/


集成开发环境(IDE:Integrated Development Environment): PyCharm

PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。

PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……

PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/

PyCharm 安装地址:http://www.runoob.com/w3cnote/pycharm-windows-install.html

PyCharm汉化:简单两步搞定!PyCharm怎么设置中文简体,为什么我的pycharm搜不到中文语言包(Chinese (Simplified) Language Pack)_pycharm为什么改不了中文-CSDN博客


执行你的第一个Python程序

对于大多数程序语言,第一个入门编程代码便是 “Hello World!”,以下代码为使用 Python 输出 “Hello World!”:

1
print("Hello World!")

输出结果:

1
Hello World!

恭喜你,已经成功入门Python这门编程语言了~!


Python 中文编码

刚刚我们已经学会了如何用 Python 输出 “Hello World!”。英文没有问题,但如果你输出中文字符 “你好,世界” 就有可能会碰到中文编码问题。

Python 文件中如果未指定编码,在执行过程会出现报错:

1
2
#!/usr/bin/python
print ("你好,世界")

以上程序执行输出结果为:

1
2
File "test.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了

注意:# coding=utf-8= 号两边不要空格。

所以如果大家在学习过程中,代码中包含中文,就需要在头部指定编码。

注意:Python3.X 源码文件默认使用UTF-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。

注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:

1
2
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
invalid continuation byte

Python注释

Python中单行注释采用 # 开头。

实例:

1
2
3
4
5
6
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

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

输出结果:

1
Hello, Python!

注释可以在语句或表达式行末:

1
name = "Runoob" # 这里的内容是一个注释

Python 中多行注释使用三个单引号 ’’’ 或三个双引号 “““

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:test.py

'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''

"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""

Python空行

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

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

记住:空行也是程序代码的一部分


Python变量

在Python编程中,变量是一个非常重要的概念。

简单来说,变量就是一个用来存储数据的容器。你可以把变量想象成一个盒子,你可以在这个盒子里放任何东西,比如数字、文字、甚至是其他更复杂的数据结构。

而Python会帮你记住这个盒子里放的是什么东西,这样你就可以在程序的其他地方使用这个盒子(变量)里的数据了。

举个例子,假设你有一些苹果,你想在程序中记住这些苹果的数量。你可以用一个变量来存储这个数量,比如:

1
apple_count = 6

这里,apple_count就是一个变量名,=是赋值操作,6是我们想要存储的数据。这行代码的意思就是,我们创建了一个名为apple_count的变量,并把6这个值赋给了它。

声明变量

在Python中,我们不需要像其他一些编程语言那样显式地声明变量的类型。

Python是一种动态类型的语言,这意味着你可以在程序的运行过程中改变变量的类型。

你只需要给变量赋一个值,Python就会自动推断出这个变量的类型。比如:

1
2
3
age = 114514  # 整数类型
name = "Mura" # 字符串类型
is_student = True # 布尔类型

这里,我们分别创建了三个变量:age、name和is_student,并分别给它们赋了不同的值。Python会自动推断出age是一个整数,name是一个字符串,is_student是一个布尔值。

变量的命名规则

Python的变量命名规范通常遵循以下规则:

1.变量名只能包含字母、数字和下划线(),不能以数字开头。

2.变量名不能使用保留字(例如if、else、while等等)。

3.变量名应该具有描述性,以便代码的可读性更高,例如在代码中使用的名称应该清晰、简洁、有意义,避免使用缩写或单个字符。

4.变量名应该遵循一定的命名约定,例如使用小写字母、下划线分隔单词的方式,例如my_variable_name。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 初始化变量num_x和num_y
num_x = 1 # num_x是变量名,1是值,把1这个值赋值给变量num_x
num_y = 2 # num_y是变量名,2是值,把2这个值赋值给变量num_y

# 计算num_x和num_y的和
sum_1 = num_x + num_y # 等同于:1+2
print(sum_1)

# 更新num_x的值
num_x = 2
# 再次计算num_x和num_y的和
sum_2 = num_x + num_y
print(sum_2)

输出结果如下:

1
2
3
4

Python 变量类型

变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

单变量赋值

1
2
3
4
5
6
7
8
height = 100 # 赋值整型变量
width = 1000.0 # 浮点型
name = "Mura" # 字符串

print(height)
print(width)
print(name)
print(height, width, name)

以上实例中,100,1000.0和”John”分别赋值给counter,miles,name变量。

执行以上程序会输出如下结果:

1
2
3
4
100
1000.0
Mura
100 1000.0 Mura

多变量赋值

Python允许你同时为多个变量赋值。例如:

1
a = b = c = 1

以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

您也可以为多个对象指定多个变量。例如:

1
a, b, c = 1, 2, "john"

以上实例,两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 “john” 分配给变量 c。


Python标准数据类型

在内存中存储的数据可以有多种类型。例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。

Python 定义了一些标准类型,用于存储各种类型的数据。Python有以下五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

Python 数字

数字数据类型用于存储数值。

他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number 对象就会被创建:

1
2
var1 = 1
var2 = 10

您也可以使用del语句删除一些对象的引用。

del语句的语法是:

1
del var1[,var2[,var3[....,varN]]]

您可以通过使用del语句删除单个或多个对象的引用。例如:

1
2
del var
del var1, var2

Python常用的数字类型有两种:

  • int(整型
  • float(浮点型

一些数值类型示例:

int float
10 0.0
100 15.20
-786 -21.9
080 32.3e+18
-0490 -90.1

Python字符串

字符串或串(String)是由数字、字母、下划线组成的一串字符。

示例 :

1
s = "Mura's blog" #引号内填写任意字符

它是编程语言中表示文本的数据类型。

Python的字串列表有2种取值顺序:

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,最大范围是字符串开头

如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。

[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
s = 'abcdefg'
# 截取字符串s的第2个到第5个字符,展示字符串切片的基本用法
print(s[1:5])

# 截取字符串s的前3个字符,展示起始索引的使用
print(s[0:3])

# 从字符串s的开始位置截取到第3个字符,不包含第3个字符,展示结束索引的使用
print(s[:3])

# 截取字符串s从第4个字符开始到结尾的所有字符,展示结束索引省略的用法
print(s[3:])

# 从字符串s的第2个字符开始,每隔2个字符截取,直到第6个字符,展示步长的使用
print(s[2:6:2])

# 从字符串s的倒数第3个字符开始,截取到倒数第2个字符,展示负索引的使用
print(s[-3:-1])

# 从字符串s的倒数第1个字符开始,倒序截取到倒数第4个字符,展示负索引和负步长的使用
print(s[-1:-4:-1])

# 输出整个字符串s,展示切片操作中省略起始和结束索引的用法
print(s[:])

输出结果:

1
2
3
4
5
6
7
8
bcde
abc
abc
defg
ce
ef
gfe
abcdefg

当使用以冒号分隔的字符串,python 返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。

上面的结果包含了 s[1] 的值 b,而取到的最大范围不包括尾下标,就是 s[5] 的值 f。

img

加号(+)是字符串连接运算符,星号(*)是重复操作。如下实例:

Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串。

Python列表

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

列表用 [ ] 标识,是 python 最通用的复合数据类型。

列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。

加号 + 是列表连接运算符,星号 ***** 是重复操作。如下实例:

1
2
3
4
5
6
7
8
9
10
11
lis = ["你", "干", "嘛", "~", "嗨", "哟"]
print(lis)
print(lis[0])
print(lis[1:3])
print(lis[1:])
print(lis[:3])
print(lis[-1])
print(lis[-4:])
print(lis[0:4:2])
print(lis[::-1])
print(lis[:])

输出结果如下:

1
2
3
4
5
6
7
8
9
10
['你', '干', '嘛', '~', '嗨', '哟']

['干', '嘛']
['干', '嘛', '~', '嗨', '哟']
['你', '干', '嘛']

['嘛', '~', '嗨', '哟']
['你', '嘛']
['哟', '嗨', '~', '嘛', '干', '你']
['你', '干', '嘛', '~', '嗨', '哟']

Python 元组

元组是另一个数据类型,类似于 List(列表)。

元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

实例:

1
2
3
4
5
6
7
8
9
tup = ("What", "can", "I", "say", "Manba", "out")
print(tup)
print(tup[0])
print(tup[1:3])
print(tup[1:])
print(tup[:3])
print(tup[::2])
print(tup[::-1])
print(tup[:])

输出结果如下:

1
2
3
4
5
6
7
8
('What', 'can', 'I', 'say', 'Manba', 'out')
What
('can', 'I')
('can', 'I', 'say', 'Manba', 'out')
('What', 'can', 'I')
('What', 'I', 'Manba')
('out', 'Manba', 'say', 'I', 'can', 'What')
('What', 'can', 'I', 'say', 'Manba', 'out')

Python 字典

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用”{ }“标识。字典由索引(key)和它对应的值value组成。

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 定义一个字典,用于存储姓名和对应的年龄
age_dic = {"小明": 18, "小红": 20, "小刚": 22, "小李": 19, "小王": 21}

# 定义一个字典,用于存储姓名和对应的职业
career_dic = {"小明": "学生", "小红": "老师", "小刚": "医生", "小李": "警察", "小王": "工人"}

# 打印年龄字典
print(age_dic)

# 打印职业字典
print(career_dic)

# 更新小明的年龄
age_dic["小明"] = 20

# 更新小刚的职业
career_dic["小刚"] = "Python程序员"

# 打印更新后的年龄字典
print(age_dic)

# 打印更新后的职业字典
print(career_dic)

# 打印小明的年龄
print(age_dic["小明"])

# 打印小王的职业
print(career_dic["小王"])

# 打印年龄字典的所有键
print(age_dic.keys())

# 打印职业字典的所有值
print(career_dic.values())

输出结果为:

1
2
3
4
5
6
7
8
{'小明': 18, '小红': 20, '小刚': 22, '小李': 19, '小王': 21}
{'小明': '学生', '小红': '老师', '小刚': '医生', '小李': '警察', '小王': '工人'}
{'小明': 20, '小红': 20, '小刚': 22, '小李': 19, '小王': 21}
{'小明': '学生', '小红': '老师', '小刚': 'Python程序员', '小李': '警察', '小王': '工人'}
20
工人
dict_keys(['小明', '小红', '小刚', '小李', '小王'])
dict_values(['学生', '老师', 'Python程序员', '警察', '工人'])

Python数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数 描述
int(x [,base]) 将x转换为一个整数
float(x) 将x转换到一个浮点数
str(x) 将对象 x 转换为字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列 s 转换为一个元组
list(s) 将序列 s 转换为一个列表
set(s) 转换为可变集合
dict(d) 创建一个字典。d 必须是一个序列 (key,value)元组。
frozenset(s) 转换为不可变集合
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串