python简介
定义:是一个免费,开源,跨品台,动态,面向对象的编程语言
程序执行方式:
- 交互式:在命令行输入指令,回车即可得到结果
- 文件式:将指令编写到py文件中,可以重复运行程序
函数:表示一个功能,制作函数的人叫做函数定义着,使用函数的人叫做函数调用者
变量:
- 定义:关联一个对象的标识
- 命名:必须为字母,数字或者下划线,后面跟着字母,数字,下划线,不能使用保留关键字,
- 建议命名:见面知意字母小写,多个单词用下划线隔开
- 语法:变量名 = 表达式 or 变量名1 = 变量名2 = 表达式 or 变量名1,变量名2 = 表达式1,表达式2
数据类型:
- None:表示不存在的特殊对象
- 整形(int):整数包含整数,负数,0。
- 有十进制,二进制,八进制,十六进制
- 小整数对象池:cpython中整数-5到256,永远存在小整数对象池中,不会释放
- 对象池:缓存的机制
- 浮点型(float)
- 小数,包含正数,负数,0.0
- 字面值1.5
- 科学计数法:1.5e1 ,05e-1
- 字符串(str)
- 用于记录文本信息
- 字面值:单引号,双引号,三引号
- 布尔值(bool)
- True表示真
- False表示假
- 复数(complex)
- 由实部和虚部组成的数字
- 虚部以j或J结尾 5+3j 5j
数据类型转换
- 转为整形:int(数据)
- 转为浮点型:float(数据)
- 转为字符串: str(数据)
- 转为布尔 : bool(数据)
- False: 0 , 0.0 ,'',None
- True:有值
运算符
- 算数运算符
- +
- -
- *
- / 小数除结果为float类型
- // 底板除:向下取整
- %取余数
- **幂运算
- 增强运算符:-= += *= /= //= %= **=
- 比较运算符:> < == >= <= !=结果是bool类型
- 逻辑运算符
- and: 一假具假
- or:一真则真
- not:取反
- 身份运算符
- is:判断两个对象是否为一个对象
- is not :与is相反
range函数
作用:可以生成一系列整数的可迭代对象。
语法:range(开始点,结束点,间隔点)
break语句:跳出循环体,后面的代码不在执行
continue语句:跳过本次循环,继续下次循环
容器
- 字符串(str):由一系列字符组成的不可变序列容器,存储的是字符编码值
- 列表(list):由一系列变量组成的可变序列容器
- 列表推导式:变量= [表达式for变量in可迭代对象if条件]
- 推导式镶嵌:[表达式for变量1 in可迭代对象1 for变量2 in可迭代对象2]
- 元组(tuple):由一系列变量组成的不可变序列容器
- 字典(dict):由一系列键值对组成的可变映射容器
- 映射(哈希算法):通过键对应值,每条记录无序。
- 键必须唯一且不可变对象(字符串,数字,元组),值没有限制
- 集合(set):由一些列不重复的变量组成的可变映射容器,相当于只有键没有值的字典
- 固定集合(frozenset):不可变的集合
函数
定义:用于封装一个特定的功能,表示一个行为,可以重复执行的语句块。
作用:提供程序的复用性,可维护性(代码层次结构更清晰)
返回值(return):方法定义着告诉调用的结果
函数参数
- 实参传递方式argument
- 位置传参:实参与形参的位置一次对应
- 序列传参:实参用*将序列拆解后与形参的位置依次对应
- 关键字传参:实参根据形参的名字进行对应
- 字典传参:实参用**将字典蔡姐与形参的名字进行对应
- 形参传递方式 parameter
- 默认(缺省)参数:参数 = 默认值
- 位置形参:def函数名(参数)
- 星号元组形参:*args
- 命名关键字形参:强制实参使用关键字传递
- 双星号字典形参 : **kwargs
可变/不可变类型再传参时的区别:
- 不可变类型:字符串,元组,固定集合,整数。浮点数。复数
- 可变类型:列表,字典,集合
- 不可变类型的数据传参时,函数内部不会改变元数据的值
- 可变类型的数据传参时,函数内部可能改变原数据的值
作用域LEGB
- local局部作用域:函数内部
- encolsing外部嵌套作用域:函数嵌套
- GLOBAL全局作用域:py文件内部
- Builtins内建模块作用域:builtins.py
- 变量名的查找规则:L-->E-->G--B
局部变量:在方法体内部定义的变量调用函数时才被创建,函数结束后自动销毁
全局变量:定义再.py文件中的变量函数体内部可以访问,但不能直接修改,需要先声明
模块:包含一系列数据,函数,类的文件,通常以.py结尾
作用:让一些相关的数据,函数,类的逻辑的组织再一起,使逻辑结构更加清晰,有利于多人合作开发。
导入
-
- import 模块名:将某模块整体导入到当前模块中
- from 模块名 import 成员名:将模块内的一个或多个成员导入到当前模块的作用域中
- from 模块名import *:将模块的所有成员导入到挡墙模块
加载过程:在模块导入时,模块的所有语句会执行。如果一个模块已经导入,则再次导入时不会执行模块内的语句
分类:
- 内置模块(builtins),在解析器的内部可以直接使用
- 标准库模块,安装Python时已安装且可直接使用
- 第三方模块,需要自己安装
- 用户自己编写的模块(可以作为其他人的第三方模块)
迭代:每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值
可迭代对象(iterable):具有__iter__函数的对象,可以返回迭代器对象
迭代器对象(iterator):可以被next()函数调用并返回下一个值的对象
说明:聚合对象通常是容器对象
作用:使用者只需要通过一种方式,便可简洁明了的获取聚合对象中各个元素,而无需了解其内部结构
生成器(generator):能够动态(循环一次计算一次返回一次)提供数据的可迭代对象
作用:在循环过程中,按照某种算法推算数据,不必创建容器存储完整的结果,从而节省内存空间,数据量越大,优势越明显
生成器函数:含有yield语句的函数,返回值为生成器对象
函数式编程:用一系列函数解决问题
-
- 函数可以赋值给变量,赋值后变量绑定函数
- 允许将函数作为参数传入另一个函数
- 允许函数返回一个函数
高阶函数:将函数作为参数或返回值的函数
函数作为参数:将核心逻辑传入方法体,使该方法的适用性更广,体现了面向对象的开闭原则
lambda表达式:是一种匿名方法
作用:作为参数传递时语法简洁,优雅,代码可读性强,随时创建和销毁,减少程序耦合度
语法:变量 = lambda形参:方法体 方法体只能有一条语句,且不支持赋值语句
闭包:
三要素
- 必须有一个内嵌函数
- 内嵌函数必须引用外部函数中变量
- 外部函数返回值必须是内嵌函数
定义:再一个函数内部的函数,用时内部函数又引用了外部函数的变量
本质:闭包是将内部函数和外部函数的执行环境绑定再一起的地下
优点:内部函数可以使用外部变量
缺点:外部变量一直存在于内存中,不会在调用结束后释放,占用内存
作用:实现Python装饰器
#看看教程 www.runoob.com