python--前进快速的编程语言知识点提要

python一般用于人工智能,我在学习它是观看的是百度AI文档,感兴趣的可以看看

python

11.21

2.X和3.X    2.X:用户更多一些,稳定,第三方库

 

python 语法优雅、简洁、快速。。。

 

python解析器     cpython   jpython  ipython  pipi。。。。。。

 

python

交互式:输入立即得到输出可以重复使用

执行脚本:直接执行一个脚本不提供再次输入能力

ide:

 

python数据类型

int、long、flout、double、字符串

 

字符串:

单引号''

双引号""

三引号''' '''  或 """ """

字符串连接    +     挨着

获取单独字符    变量名[索引]    索引也可以使负数代表从右开始   最后一是-1

切片(获取子串)变量名[start:end]

start表开始位置(包括)默认值是0

end表示结束位置(不包括)默认值是字符串长度

如果end < start 返回空串

列表list(类似java中list)

索引切片同字符串一行,字符串不可变       list里面的元素可变

 

if

 

elif

 

else

用法和java一样

 

for

Python 中的 for 语句和 C 或 Pascal 中的略有不同。

通常的循环可能会依据一个等差数值步进过程(如 Pascal),

或由用户来定义迭代步骤和中止条件(如 C ),

Python 的 for 语句依据任意序列(链表或字符串)中的子项,

按它们在序列中的顺序来进行迭代

 

for 变量名 in 一般是集合或字符串或等差数列

 

range()

生成一个等差级数链表

 

range(10)  生成一个0-9的数列

range(5, 10)  生成一个从5开始到9(包含)结束

range(0, 10, 3)   第一个参数起始位置   第二参数终止为止   第三个参数步进值

 

 

break 语句和 C 中的类似,用于跳出最近的一级 for 或 while 循环。

 

循环可以有一个 else 子句;

它在循环迭代完整个列表 (对于 for) 后或执行条件为 false (对于 while) 时执行,

但循环被 break 中止的情况下不会执行。

 

pass 语句什么也不做。它用于那些语法上必须要有什么语句,但程序什么也不做的场合

 

11.22

定义函数

使用关键字def后面加函数名加参数列表加:然后换行缩进函数体

有return代表有返回值,没有return代表返回

默认参数

定义方法是使用  形参=值   的方式定义参数的默认值

调用方法时如果不写参数使用默认参数值     必要参数一定放在前面

关键字参数:

通过形参指定赋值的参数

可变参数列表类似java

 

Lambda 表达式:

面向函数编程的重要特征之一

可以创建短小的匿名函数

文档字符串

类似于java    javadoc

给类或者函数进行说明(通常也用作范围/多行注释)

 

列表

append追加到最后

extend把一个列表追加到最后

insert插入指定位置的元素

remove删除指定元素

pop    没有参数删除最后一个元素并返回,     有参数   删除指定位置的元素并返回

index查找指定元素返回索引位置

count统计指定元素出现的次数

sort对链表中的元素就地进行排序(参数可以用来自定义排序方法,参考 sorted() 的更详细的解释)。

reverce反转列表

 

 

filter

filter(function, sequence) 返回一个 sequence(序列),

包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型)

 

map

map(function, sequence) 为每一个元素依次调用 function(item) 并将返回值组成一个链表返回

 

reduce

reduce(function, sequence) 返回一个单值,它是这样构造的:

首先以序列的前两个元素调用函数 function,再以返回值和第三个参数调用,依次执行下去

 

列表推导式

详情见   python入门指南 5.1.4章节

del

删除列表元素按照索引

可以删除一个元素也可以删除一个切片也可以清空整个列表

 

元组

标准序列类型

不可变  个数     元素

一个元组由数个逗号分隔的值组成

一个特殊的问题是构造包含零个或一个元素的元组:为了适应这种情况,

语法上有一些额外的改变。一对空的括号可以创建空元组;

要创建一个单元素元组可以在值后面跟一个逗号

(在括号中放入一个单值不够明确)。丑陋,但是有效

 x, y, z = t

这个调用等号右边可以是任何线性序列,称之为 序列拆封 非常恰当。

序列拆封要求左侧的变量数目与序列的元素个数相同。

要注意的是可变参数(multiple assignment)其实只是元组封装和序列拆封的一个结合。

集合

集合是一个无序不重复元素的集

基本功能包括关系测试和消除重复元素

集合对象还支持 union(联合),intersection(交),difference(差)和 sysmmetric difference(对称差集)等数学运算

创建空集合set()

字典(类似java中map)

字典以 关键字 为索引,关键字可以是任意不可变类型,通常用字符串或数值

创建空字典{}

dict() 创建字典

 dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])

 dict(sape=4139, guido=4127, jack=4098)

 

 

循环技巧  

 enumerate()

可以同时得到索引位置和值的方法

 zip()

同时遍历多个序列

 reversed()

逆向循环序列

 sorted()

不改变原来序列的前提下排序返回新的序列

iteritems()

字典的方法---》调用后可以同时得到K,V

条件控制

比较操作可以传递

例如 a < b == c 判断是否 a 小于 b 并且 b 等于 c 。

and(与or比优先级相对较高)    or 短路效果   not 优先级最高的   

可以把比较或其它逻辑表达式的返回值赋给一个变量(非0(非空)为真)

不同类型可以比较     按照类型英文字母排序

模块

模块是包括 Python 定义和声明的文件

import 模块名

form 模块名 import 方法(类、其他属性、*)

模块名.方法

模块的搜索路径

输入脚本的目录(当前目录)。

 

环境变量 PYTHONPATH 表示的目录列表中搜索(这和 shell 变量 PATH 具有一样的语法,即一系列目录名的列表)。

 

Python 默认安装路径中搜索。

 

包通常是使用用“圆点模块名”的结构化模块命名空间

python中以是否有__init__.py来区分是包还是普通文件夹

 

 

11.23.2018输出格式化

str()和repr()

str.rjust(站几位) 方法的演示,它把字符串输出到一列,并通过向左侧填充空格来使其右对齐。

类似的方法还有 str.ljust() 和 str.center()

str.format参照 Format String Syntax。python入门指南7.1章节

print 'We are the {} who say "{}!"'.format('knights', 'Ni')

 

文件的读写

函数 open() 返回文件对象,通常的用法需要两个参数:open(filename, mode)。

第二个参数是由有限的字母组成的字符串,描述了文件将会被如何使用。

可选的 模式 有:'r',此选项使文件只读;'w',此选项使文件只写

(对于同名文件,该操作使原有文件被覆盖);'a',此选项以追加方式打开文件;'r+',

此选项以读写方式打开文件;模式参数是可选的。如果没有指定,默认为 'r' 模式。

获取文件对象后的操作

read读

readline读取一行

readlines读取多行

write写

tell返回指针位置

seek移动指针

close关闭文件对象

with open('/tmp/workfile', 'r') as f: 相当于获取文件对象并带有异常处理

 

JSON(JavaScript Object Notation)

标准模块 json 可以接受 Python 数据结构,并将它们转换为字符串表示形式;此过程称为 序列化。

从字符串表示形式重新构建数据结构称为 反序列化

 

json.dump(数据, 文件)

变量 = json.load(文件)

错误和异常

 语法错误

所写的语句不符合python的语法规范

 异常

运行期检测到的错误称为 异常

异常处理:

try:

可能出现异常的语句

except 要捕获的异常类型:

捕获异常后做的处理

抛出异常

raise

用户自定义异常

 

class MyError(Exception):

def __init__(self, value):

self.value = value

def __str__(self):

return repr(self.value)

定义清理行为

finally:无论是否有异常都执行

预定义清理行为

with

类继承机制允许多重继承,派生类可以覆盖(override)基类中的任何方法或类,

可以使用相同的方法名称调用基类的方法

 

命名空间 是从命名到对象的映射

多继承

class 类名(父类)

class 类名(父类1,父类2,父类3。。。。)

私有变量和类本地应用

Python 中不存在私有变量

以一个下划线开头的命名(例如 _spam )会被处理为 API 的非公开部分

 

 

迭代器(for)

定义一个 __iter__() 方法,使其返回一个带有 next() 方法的对象。

如果这个类已经定义了 next(),那么 __iter__() 只需要返回 self

 

生成器

Generator 是创建迭代器的简单而强大的工具

def reverse(data):

for index in range(len(data)-1, -1, -1):

yield data[index]

 

生成器表达式

类似于列表推导式

 

 

 

11.26

操作系统接口

os

shutil

数学

math

random

互联网访问

 urllib2

时间和日期

datetime

性能度量

timeit

profile

 pstats

多线程

线程是一个分离无顺序依赖关系任务的技术。在某些任务运行于后台的时候应用程序会变得迟缓,

线程可以提升其速度。一个有关的用途是在 I/O 的同时其它线程可以并行计算。

 

多线程应用程序的主要挑战是协调线程,诸如线程间共享数据或其它资源。为了达到那个目的,

线程模块提供了许多同步化的原生支持,包括:锁,事件,条件变量和信号灯。

 

re

将正则表达式编译成 Pattern 对象

pattern = re.compile(r'正则表达式')

Pattern 对象的一些常用方法主要有:

match 方法:从起始位置开始查找,一次匹配

search 方法:从任何位置开始查找,一次匹配

findall 方法:全部匹配,返回列表

finditer 方法:全部匹配,返回迭代器

split 方法:分割字符串,返回列表

sub 方法:替换

 

匹配中文

中文的 unicode 编码范围 主要在 [u4e00-u9fa5]

re.compile(ur'[\u4e00-\u9fa5]+')

 

贪婪模式与非贪婪模式

贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配 ( * );

非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配 ( ? );

# -*- coding: UTF-8 -*-

class Emp:

    def __init__(self, num, name, age, sex, sale):

        self.num = num

        self.name = name

        self.age = age

        self.sex = sex

        self.sale = sale



    def __str__(self):

        return "工号:" + self.num + "---姓名:"+ self.name

# -*- coding: UTF-8 -*-

from Emp import Emp

import json

arr = []

with open("d://123.txt", "r") as empfile:

    if empfile.read() != "":

        empfile.seek(0)

        arr = json.load(empfile)



while True:

    print("""--------------

1、员工录入

2、查询员工信息

3、修改员工信息

4、删除

5、根据工号查看

6、退出""")

    cho = int(raw_input("请输入您的选择"))

    if cho == 1:

        num = raw_input("请输入工号")

        name = raw_input("请输入姓名")

        age = raw_input("请输入年龄")

        sex = raw_input("请输入性别")

        sale = raw_input("请输入工资")

        #emp = Emp(num, name, age, sex, sale)

        emp = {"num":num, "name":name, "age":age, "sex":sex, "sale" :sale}

        arr.append(emp)

    elif cho == 2:

        for x in arr:

            print x

    elif cho == 3:

        num = raw_input("请输入工号")

        name = raw_input("请输入姓名")

        age = raw_input("请输入年龄")

        sex = raw_input("请输入性别")

        sale = raw_input("请输入工资")

        for x in arr:

            if x["num"] == num:

                x["name"] =name

                x["age"] = age

                x["sex"] = sex

                x["sale"] = sale

    elif cho == 4:

        num = raw_input("请输入工号")

        for x in arr:

            if x["num"] == num:

                arr.remove(x)

                break

    elif cho == 5:

        num = raw_input("请输入工号")

        for x in arr:

            if x["num"] == num:

               print x

    elif cho == 6:

        with open("d://123.txt", "w") as empfile:

            json.dump(arr, empfile)

        break

猜你喜欢

转载自blog.csdn.net/qq_42721694/article/details/85001495