标签:general ... tab eval 匿名函数 执行 完成 赋值 按位取反
#简介
-Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言
-Python的设计具有很强的可读性
-解释性语言
-交互式语言
-面向对象语言
-初学者语言
#发展历史
-Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的
-Python源代码遵循GPL(GNU General Public License)协议
#特点
-易于学习
-易于阅读
-易于维护
-广泛的标准库
-互动模式
-可移植
-可扩展
-数据库:提供主要商业数据库的借口
-GUI编程:支持GUI可以创建和移植许多系统调用
-可嵌入:嵌入C++以让程序用户获得“脚本化”能力
#环境搭建
-anaconda+pycharm
#基础语法
-print 输出、打印
print(“hello python”)
hello python
-标识符
-在Python里,标识符由字母、数字、下划线组成,但不能以数字开头
-标识符区分大小写
-以单下划线开头的(_foo)代表不能直接访问的类属性,需要通过类提供的接口进行访问,不能用from xxx import * 而导入
-以双下划线开头的(__foo)代表类的私有成员
-以双下划线开头和结尾的(__foo__)代表特殊方法专用标识,如构造函数:__init__()
-保留字符
-保留字不能用作常熟或变量,以及其它标识符名称
-所有Python 的关键字只包含小写字母
- and
- exec
- not
- assert
- finally
- or
- break
- for
- pass
- class
- from
- print
- continue
- global
- raise
- def
- if
- return
- del
- import
- try
- else
- is
- with
- except
- lambda
- yield
-行和缩进
-上下文保持相同,一个缩进一般是一个tab或4个空格
-可以使用斜杠(\)将一行的语句分为多行显示,语句中包含[] {} ()的不需要
-引号和#号
- ‘xxx‘ 可表示字符串
- "xxx" 可表示字符串
-‘‘‘xxx‘‘‘ 可用作注释,一般是比较长的,如段落级的注释
- # 单行注释
-空行和空格
-良好习惯,便于后期维护或重构
-函数之间或类的方法之间用空行分隔,表示一段新的代码的开始,类和函数入口之间也用一行空行分隔,以突出函数入口的显示
#变量类型
-变量存储在内存的值,可以指定不同的数据类型
-变量赋值
-用(=)来赋予
-可以多个变量同时赋值
eg:a = b = c = 1
a, b, c = 1, 2, 3
-标准数据类型
-Number 数字
-int 有符号的整型
-float 浮点型
-complex 复数
-String 字符串
-编程内表示文本的数据类型
-List 列表
-用[]标识,最通用的复合数据类型
-切片
-列表的值可以切割成片
-如:[0:2]
-Tuple 元组
-用()标识
-可以看作一个只读的list
-Dictionary 字典
-用{}标识
-由索引(key)和它对应的值(value)组成
-数据类型转换
-函数 -描述
-int(x[,base]) -将x转化为一个整数
-float(x) -转化为浮点型
-complex(real[,imag]) -创建一个复数
-str(x) -转化为字符串
-repr(x) -将对象x转化为表达式字符串
-eval(str) -用来计算在字符串中有效Python表达式,并返回一个对象
-tuple(s) -转为元组
-list(s) -转为列表
-set(s) -转为可变集合
-dict(d) -创建一个字典,d必须是一个序列(key,value)元组
-frozenset(s) -转为不可变集合
-chr(x) -将一个整数转化为一个字符
-unichr(x) -将一个整数转化为Unicode字符
-ord(x) -将一个字符转化为它的整数值
-hex(x) -将一个整数转化为16进制字符串
-oct(x) -将一个整数转化为8进制字符串
#运算符
-举个例子:4+5=9 4和5被称为 操作数 ,‘+’称为运算符
-支持下列类型的运算符
-算术运算符
- + 两个对象相加
- - 两个对象相减
- * 两个对象相乘
- / 两个对象相除
- % 取模,也就是返回余数
- ** 幂,返回x的y次幂
- // 取整除
-比较(关系)运算符
- == 比较对象是否相等
- != 不等于
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
-赋值运算符
- = 简单的赋值运算符
- += 加法赋值运算符
- -= 减法赋值运算符
- *= 乘法赋值运算符
- /= 除法赋值运算符
- %= 取模赋值运算符
- **= 幂赋值运算符
- //= 取整除赋值运算符
-逻辑运算符
- and 布尔“与”
- or 布尔“或”
- not 布尔“非”
-位运算符
-按位运算符是把数字看成2进制来计算的
- & 按位与运算符
- | 按位或运算符
- ^ 按位异或运算符
- ~ 按位取反运算符
- << 左移动运算符
- >> 右移动运算符
-成员运算符
- in 如果在指定的序列中找到值返回true,否则返回false
- not in 如果在指定的序列中没有找到值返回true,否则返回false
-身份运算符
-用于比较两个对象的存储单元
- is 如果两个标识符引用自同一对象返回true,否则返回false
- is not 如果两个标识符引用的不是同一对象返回true,否则返回false
#条件语句/分支循环
-通过一条或多条语句的执行结果(true或false)来决定执行的代码块
-可以嵌套使用,但不推荐
- if语句
if 判断条件 :
执行语句...
- 双向分支
if 判断条件 :
执行语句...
else:
执行语句...
-多路分支
if 判断条件 :
执行语句...
elif 判断条件: #可以有很多个
执行语句...
else: #可选
执行语句...
#循环语句
-重复执行某些固定动作或处理基本固定的事物
-分类
-for循环
for 变量 in 序列:
语句1
语句2
...
else: #可选
语句1
语句2
...
-while循环
while 条件表达式:
语句块
-循环之break,continue,pass
-break:无条件结束整个循环,简称循环猝死
-continue:无条件结束本次循环,重新进入下一循环
-pass:不做任何事情,空语句,多为保持程序的完整性而作占位用
#迭代器与生成器
-迭代器
-迭代是Python最强大的功能之一,是访问集合元素的一种方式,字符串,列表或元组对象都可用于创建迭代器
-迭代器是一个可以记住遍历的位置的对象
-迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退
-迭代器有两个基本的方法:iter() 和 next()
-生成器
-在 Python 中,使用了 yield 的函数被称为生成器(generator)
-跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器
-在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行
-调用一个生成器函数,返回的是一个迭代器对象
#函数
-代码的一种组织形式
-一个函数一般完成一项特定的功能
-函数的使用
-函数需要先定义
-使用函数俗称调用
def 函数名称(参数列表):
函数体
-函数名称自己定义,约定俗成,大驼峰给类使用
-参数
-形参(形式参数)
-函数定义时用到的参数没有具体值,只是一个占位符号
-实参(实际参数)
-调用函数实际输入的值
-返回值
-return:返回执行结果
#匿名函数
-python 使用 lambda 来创建匿名函数,不再使用 def 语句这样标准的形式定义一个函数
-lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去
-lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数
#变量作用域
-变量有作用范围限制
-分类
-全局(global): 在函数外部定义
-局部(local):在函数内部定义
-变量的作用范围
-全局变量:在整个全局范围都有效
- 全局变量在局部可以使用(即函数内部可以方位函数外部定义的变量)
- 局部变量:在局部范围可以使用
- 局部变量在全局范围无法使用
-LEGB原则
- L(Local)局部作用域
- E(Enclosing function locale)外部嵌套函数作用域
- G(Global module)函数定义所在模块作用域
- B(Buildin): python内置魔抗的作用域
#递归函数
- 含税直接或者间接调用自身
- 优点:简洁,理解容易
- 缺点:对递归深度有限制,消耗资源大
- python对递归深度有限制,超过限制报错
- 在写递归程序的时候,一定注意结束条件
-经典案例,汉诺塔
#数据结构
-list 列表
-列表可以修改,而字符串和元组不能
-列表方法
list.append(x) 把一个元素添加到列表的结尾
list.extend(L) 通过添加指定列表的所有元素来扩充列表
list.insert(i,x) 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引
lsit.remove(x) 删除列表中值为 x 的第一个元素。如果没有这样的元素,就会返回一个错误
lsit.pop(i) 从列表的指定位置移除元素,并将其返回。如果没有指定索引,a.pop()返回最后一个元素
lsit.clear() 移除列表中的所有项,等于del a[:]
lsit.index(x) 返回列表中第一个值为 x 的元素的索引。如果没有匹配的元素就会返回一个错误
list.count(x) 返回 x 在列表中出现的次数
list.sort() 对列表中的元素进行排序
lsit.reverse() 倒排列表中的元素
-tuple 元组
-元组可以看成是一个不可更改的list
-元组特性
-是序列表,有序
-元组数据值可以访问,不能修改,不能修改,不能修改
-元组数据可以是任意类型
-总之,list所有特性,除了可修改外,元组都具有
-也就意味着,list具有的一些操作,比如索引,分片,序列相加,相乘,成员资格操作等,一模一样
-元组的函数,基本跟list通用
-set 集合
-集合是高中数学中的一个概念
-一堆确定的无序的唯一的数据,集合中每一个数据成为一个元素
-特性
-集合内数据无序,即无法使用索引和分片
-集合内部数据元素具有唯一性,可以用来排除重复数据
-集合内的数据,str, int, float, tuple,冰冻集合等,即内部只能放置可哈希数据
-dict 字典(key,value)
-创建有值的字典, 每一组数据用冒号隔开, 每一对键值对用逗号隔开
-用dict创建有内容字典
-利用关键字参数
-特性
- 字典是序列类型,但是是无序序列,所以没有分片和索引
- 字典中的数据每个都有键值对组成
-遍历
...
(未完待续...)
标签:general ... tab eval 匿名函数 执行 完成 赋值 按位取反
原文地址:https://www.cnblogs.com/Gulidon/p/9309355.html