Python简要学习教程
1 Python基础性质
重点:Python是一种动态的强类型语言
接下来我们分开理解动态的和强类型:
1.1 动态
静态类型(static):所有的变量类型必须被显示地声明,因为这些信息在编译阶段就被需要。例如,在 我们熟悉的C++中,
int flag = 1 // 声明变量并赋值
动态类型(dynamic):不需要显示声明,可以直接赋值,因为类型赋值发生在运行阶段。例如,在 Python 中,
flag = 1 # 直接赋值,不需要显示声明变量类型
1.2 强类型
强类型(strong):变量的类型一旦确定,将不能同其他类型的变量进行混合运算。例如,在Python中,
num1 = 1
str1 = 'A'
num1 = num1 + str1 # 是错误的,string类型和整型无法混合运算
弱类型(weak):确定类型变量可以与其他类型混合计算。例如,我们熟悉的C++,
char str1 = 'A';
int num1 = 1;
num1 = num1 + str1; // 是可以的,'A'是ASCⅡ中的65,num1 = 66
2 Python的特殊类型
2.1 注意
- Python里没有C++里的char类型
- Python里只有string,即字符串,而且两边用单引号(’ '),双引号(" ")都行
- Python里的乘方是两个星号,即
a**b
表示: a b a^b ab - 取名:变量使用驼峰命名法:
this_Is_A_Variable
- 函数命名全为小写
- 类的命名首字母大写
2.2 列表
Python里的列表,大家可以适当理解为C++的数组,但没有那么复杂。
它具有一片连续内存空间,相当于数据结构里的顺序表,但它也会转化为单链表
nums1 = [1, 2, 3, 4, 5, 6]
animals = ['dog', 'cat', 'mouse', 'bird']
print(nums1[0]) # 1 打印nums1列表第一个元素
print(animals[-1]) # bird 打印animals列表的倒数第一个元素
注意:
- 和C++一样,索引都是从0开始
- 两边要用中括号([ ])括住
- 索引-1为倒数第一个,索引-2为倒数第二个
- 列表有很多对应的函数,可以对列表内、列表之间进行操作
列表的操作函数:
-
list()函数:将循环体展开成列表
list(range(5)) # [0, 1, 2, 3, 4]
(详细关于循环体后面再说)
-
append(x)函数,将元素x添加到列表最后
-
insert(index, x)函数,在列表指定位置index处添加元素x
-
remove(x)函数,移除列表中首次出现的指定元素x
-
count(x)函数,返回列表中x元素出现的次数
2.3 字典
Python字典可以将相关信息关联起来,如:
myphone = {'brand': 'HUAWEI', 'model': 'Mate40', 'price': 1}
print(myphone['brand']) # HUAWEI
print(myphone['price']) # 1
里面的结构称为“键 - 值对”,像上面的’brand’、‘model’称为键,而’HUAWEI’、'Mate40’称为值。注意:字典是用大括号({ })进行包围的。
字典也有很多对应的函数和方法进行操作
3 Python的语句差异
-
Python里面的语句是没有分号(;)作为结尾的,换行即为语句的结束
num1 = num1 + str1 # 这个就是一个语句,没有后面的结束符号
-
Python里面也没有通过大括号括起来的语句块和作用域,同一缩进值即为同一语句块作用域
if flag1 > 1: counter+=1 # 其中counter+=1和print(counter)都是一个缩进值,所以他们都是属于 print(counter) # if flag1 > 1:下的作用域和语句块 print()
3.1 if 语句
Python用的是 if-elif-else 结构:
age = 12
if age < 4 or age = 4:
price = 0
elif age < 18:
price = 5
else:
price = 10
print(price)
注意:
- if 后的逻辑表达式不需要用小括号()括住
- if 语句后要用冒号(: )
- 与——’&’ 或——’|’
3.2 for循环
在C++我们可以说for语句是一个循环语句,但在Python里面,我觉得称为遍历语句,或者理解为遍历会比较好一点。
for循环可以理解为有两种,一种是遍历列表,一种是常用控制次数。
注意:和 if 语句一样,有冒号(: ),且要缩进
3.2.1 列表for循环
animals = ['dog', 'cat', 'mouse']
for animal in animals: # 让animal在列表animals里遍历
print(animal)
# dog
# cat
# mouse
3.2.2 控制次数的for循环
# 循环3次的表达
for i in range(0, 3): # range()函数返回的是一个对象,这个后来再讲吧
print(i)
# 0
# 1
# 2
或者:
# 循环3次的表达
for i in range(1, 4): # range()函数返回的是一个对象,这个后来再讲吧
print(i)
# 1
# 2
# 3
3.3 while 语句
flag = 1
while flag < 3:
flag += 1 # Python里没有自增类似i++的表示
while 语句和 if 语句较为相似,可一同记忆
4 函数
一个例子:
def greet_user(username):
"""打印问候语句"""
print("Hello, " + username + "!")
return username
greet_user('Tom') # Hello, Tom!
其中,def 为函数定义的关键字,提示解释器其为函数定义,greet_user为函数名称,后面括号内的username为函数参数,注意要冒号且缩进,然后三个双引号是函数说明"""这里是函数功能性说明"""
,接下来的便是函数体,最后可以返回值。
调用形式和C++类似,函数名(参数)
5 类
class Dog(): # ()中是放继承对象
'''一个小狗的类'''
def __init__(self, name, age): # 构造函数
'''初始化小狗的属性'''
self.name = name
self.age = age
def sit(self): # 类中的函数
'''模拟小狗坐下'''
print(self.name + "sits!")
Dog1 = Dog()
Dog1.sit()
Python的类是用class
作为关键词的,一般的类的名称首字母大写,名称后面的括号是用于放置继承对象的。每个类都会有一个构造函数,它的表现形式和C++的不一样,是用分别用两个下划线围住init,即__init__
。其他函数的定义便差不多了。
重点:关于self
的理解。
self
是类中一个代表对象本身的参数,它的意义有点像this指针,指向对象本身中的函数或者参数。而且它也像C++中的private的私有成员,一般只能在内部运转,无法显式地在外面调用。
6 库
Python的库是包含函数和类定义的文件,和C++的头文件有所不同,C++的头文件是函数和类的声明,并不包括定义,而且又要引入命名空间和主函数,相当复杂。在Python,这些都不需要了。
import numpy as np # 引入numpy库
x = np.pi/2 # 使用numpy库内的pi定义,即兀
answer1 = np.sin(x) # 调用numpy库内的sin()函数
print(answer1) # 1
这短短的一句话就足够了,引入numpy库,并在本编辑中用np表示,然后便可以进行调用。
调用的方法和类相似,通过点(.)进行访问,如np.sin()
是访问numpy库内的sin()函数
6.1 NumPy库
这个库包含了很多数学计算公式和函数,特别是可以存储和处理大型矩阵。
官方中文网站:https://www.numpy.org.cn/user/quickstart.html
6.1.1 矩阵创建
- 矩阵自定义:
import numpy as np
mat1 = np.array([[1, 2, 3], [4, 5, 6]])
print(mat1)
# [[1, 2, 3]
# [4, 5, 6]]
如上例子,可以使用numpy库内的array函数创建矩阵,注意:在array函数参数中,要将创建的矩阵整个抱在中括号([ ])中,然后同一行要用中括号([ ])括起来,不同行间用逗号隔开。因为,array函数还会有其他默认参数可以调节,故矩阵内容只是一个参数
- 统一字符矩阵
import numpy as np
mat0 = np.zeros((2, 3)) # 创建全0矩阵
mat1 = np.ones((2, 3)) # 创建全1矩阵
print(mat0)
# [[0, 0, 0]
# [0, 0, 0]]
6.2 Matplotlib库
Matplotlib是一个Python 2D绘图库。
官方中文网站:https://www.matplotlib.org.cn/tutorials/#%E5%BA%8F%E8%A8%80
6.3 Pandas库
一个数据分析库
https://www.pypandas.cn/docs/
6.4 TensorFlow库
一个深度学习库
http://www.tensorfly.cn/tfdoc/tutorials/deep_cnn.html