概述
python是动态编程语言,动态编程语言的变量不需要进行数据类型定义,其数据类型可以不固定!python是解析性语言,需要提前安装python解析器才能执行python程序。
Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发、PC 软件开发、Linux 运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python 都能胜任 。
一、变量
变量命名必修是字母或者下划线开头,不能是数字或者其它字符开头,如name、age1。 变量名不可是python关键字,如if、for等等,也不能和已有的内置函数重名。语句 name=”tom” 完成了两个任务,分别是声明一个变量name,并设置初始化值为字符串”tom”.变量的内容在程序运行过程中是可以发生变化的。如 a=10,a=a+10,执行后a的值为20
二、基本数据类型
1、数值(Number)
简单理解就是能进行加减乘除等运算的数据,包括整型(int)和浮点型(float),如a=2,pi=3.14浮点型就是数学中的小数。
数值运算符:乘() 除( /) 求余(%) 整除( //) 幂次方( *)
2、字符串(String)
简单理解就是文本。字符串初始化时用英文引号引住,如name=”tom jack”。字符串可以做连结运算,或者截取其中一段子字符串!如:name=name+”hello” ,name[0],name[1:3]
3、布尔(Bool)
只有True和False两个值,注意首字母大写,没有引号。如 a=True。布尔数据可以进行布尔运算(and or not)。
4、容器
容器表示能存储许多数据的数据类型,当然容器中也可以嵌套存储容器!容器主要包括列表(List)、元组(Tuple)、集合(Sets)、字典(Dictionary),初学阶段重点要求掌握列表,列表掌握后其它容器类型参照即可。列表就是按照顺序存放数据,序号从0开始
初始化:初始化一个空的列表 L=[]、初始化一个有初始值的列表 L=[1,”a”,2,3]
获取列表中的某项: L[1]
截取其中一段子列表:L[1:3]
列表更新:L.append(x) L.pop()
5、空(None)
声明了一个变量,但是没有指向任何存储空间。 a=None
注意:由于python是弱数据类型的编程语言,一个变量的数据类型是可以发生变化的,可以使用type函数查看一个变量的数据类型
n=3.14
type(n)
<class 'float'>
n="3.14"
type(n)
<class 'string'>
二、函数
可重复使用的代码片段。函数三要素,名称、参数、返回值!函数可以有参数,也可以没有参数。可以有返回值,也可以没有返回值,函数的返回值可以赋值给一个变量。函数一般组成: 返回值 函数名(参数)
根据函数的来源不同,可以分为内置函数、用户自定义函数、模块函数
1、内置函数 由python解析器提供,可以直接调用,如print、len。
2、自定义函数先定义,后调用。定义函数使用def关键字,有返回值的使用return关键字。函数一旦return,则立即结束
#定义求和函数add
#定义参数 a,b形参
def add(a,b)
return a+b
c=add(100,11)
return c
#调用求和函数
#调用实参
cc=add(100,11)
3、模块函数,要先安装扩展模块,引入模块,最后调用模块中的函数。引入模块使用import关键字。
import math
print(math.pi)
print(math.sin(3))
a=math.sqrt(101)
print(a)
三、if分支
1、if单分支
满足if条件即执行
n=100
if n%2==0:
print(n,"是偶数")
2、if-else双分支
满足if条件执行,否则执行else语句
n=100
if n%2==0:
print(n,"是偶数")
else:
print(n,"不是偶数")
3、if-elif-else 多分支
多个分支,也可使用前两种嵌套实现
#注意只会执行一个分支,如果n=15,判断为3的倍数分支后执行,后面5的倍数分支不会执行
if n%3==0:
print(n,"是3的倍数")
elif n%5==0:
print(n,"是5的倍数")
else:
print(n,"既不是3的倍数,也不是5的倍数")
四、循环执行
重复执行,直到条件不满足为止,有for迭代循环和while条件循环
1、for 循环(从可迭代对象中依次取出对象),常见的字符串和容器(列表、元组、字典、集合)就是可迭代对象,语法需要注意的是for末尾有英文冒号,for内部语句要缩进
a=[1,3.14,"hello",True,["a"]]
for i in a: #注意,a必须是一个可以迭代的对象,如range(10)
print(i)
range函数提供了常见自然数的迭代循环,range(起始值,终止值,步长),起始值默认为0,步长默认为1
for i in range(10):
print(i*i)
比如让列表L=[1,3,5,7,9]中的各个元素变为原来的平方,应该选择循环列表的下标
#错误,迭代循环中是将列表中的值拷贝到l中,列表本身不会发生改变
for l in L:
l=l**2
#正确做法是循环列表下标
for i in range(len(L)):
L[i]=L[i]**2
2、while循环(条件满足则执行循环体,一般情况下执行中会改变条件语句中的变量)
a=0
while a<10:
a=a+2
3、break 和continue关键字
break跳出整个循环体
continue 跳出当次循环
五、对象
为了程序设计的方便,我们常常把一些变量和与之有关的函数封装成一个整体,这就是面向对象的编程设计思维。这些变量叫做这个对象的属性,这些函数叫做这个对象的方法!对象在使用前要进行实例化!实例化的时候要调用类同名的函数,并注意初始化参数!我们常用的列表其实就是一个对象
#实例化,python为了方便,可以直接使用L=[]
L=list()
#调用列表的insert方法,在指定的位置插入元素
L.insert(0,1)
#调用列表的sort方法排序
L.sort()
使用class关键字定义类,比如有一个学生类Student,那么可以实例化成多个具体的学生,这个学生有属性姓名name和年龄age,也有对外展示show这个方法。
#类和实体
#使用class关键字定义类,类是抽象的,定义后要实例化后才可使用
#类名默认大写,实例化使用类的同名称函数,实际是调用类的初始化函数!注意参数的个数和类型
#使用dir函数查看对象的所有属性和方法
#使用type函数查看对象所属的类
class Person:
#类定义中有一个特殊的方法,__init__,叫做类的初始化方法
def __init__(self,name,age,weight):
print("person init...")
self.name=name
self.age=age
self.weight=weight
#类的成员方法定义,第一参数使用self,区别普通方法
#类的成员方法和属性都要通过self调用 ,self.**
def speak(self):
print("My name is ",self.name,", my age is ", self.age,",my weight is ",self.weight)
#注释 解释一下这个方法作用和参数
def eatting(self):
print("i am eatting")
self.weight=self.weight+1
def show(self):
print("I am a person")
#类可以继承,子类拥有父类的属性和方法,并且可以重载父类方法(方法重写)
#定义类时候父类跟在子类名称和后面,用括号括住
#最顶层的父类是object
class Student(Person):
def __init__(self,name,age,weight,grade):
print("student init...")
#super 调用父类构造方法,先初始化父类
super().__init__(name,age,weight)
#构造父类后,再构造子类不一样的地方
self.grade=grade
#方法重载,重写父类的方法
def eatting(self):
print("i am eatting")
self.weight=self.weight+2
stu1=Student("tom",12,55,10)
stu1.speak()
stu1.eatting()
stu1.speak()
六、模块
简单理解模块就是别人写好的python文件,我们直接拿来用!首先安装模块库,然后使用import关键字引入,最后方可调用模块
1、安装模块,即将别人写好的程序安装到本地,可以下载后手动安装,也可以使用pip工具直接安装,推荐使用pip工具
#使用pip工具安装matplotlib库
pip install matplotlib
2、引用模块
import matplotlib
3、调用模块
调用的时候可用模块名.对象 调用模块中的对象,这个对象可以是方法或者变量
x=[1,2,3]
y=[1,4,9]
matplotlib.plot(x,y)
matplotlib.show()
可以使用as关键字指定别名,即给模块取一个别名,而不是直接使用模块的默认的名称,当模块名称很复杂,或者有同名模块时候,这个很实用
#当给math模块取别名为m后,后面的调用都要用m来调用
import math as m
a=m.sqrt(101)
有时候我们想调用模块中的对象和调用python内置对象一样方便,不想使用模块名称或者模块名称别名,这个时候可以使用from+import关键字引入模块,被引入的对象可以直接调用
from math import sqrt
a=sqrt(101)
常用到的模块:
数学模块 math
随机模块 random