Python自动化开发03

集合

1、去重

list_1 = set([1,2,3,4,0,7,4,8])

list2 = set([99,34,6,8,3])

list3 = set([0,4,8])

list4 = set([84,45,49])

print(list_1) <<< {0, 1, 2, 3, 4, 7, 8}

2、 交集

list_1 & list2

print(list_1.intersection(list2)) <<< {8, 3}

3、并集(合集)

list_1 | list2

print(list_1.union(list2)) <<< {0, 1, 2, 3, 4, 99, 34, 7, 8, 6}

4、子集

print(list_1.issubset(list2))   <<<  False

5、父集

print(list_1.issuperset(list3)) <<< True

6、差集

list_1 - list2

print(list_1.difference(list2)) <<< {0, 1, 2, 4, 7}

7、补集

list_1 ^ list2

print(list_1.symmetric_difference(list2)) <<< {0, 1, 34, 99, 2, 6, 4, 7}

8、判断是否有交集(没有为true)

print(list_1.isdisjoint(list4)) <<< True

9、小知识点补充

list_1.add(59)    #添加

list_1.update([10,37,42])  #添加多项

list_1.remove(8)   #删除指定项,没找到会报错

list_1.discard(88)   #删除指定项,没找到不报错

list_1.pop()   #随机删除

文件操作

f = open("file.txt","r",encoding="utf-8")

f.read()  ----> 一次性读所有

f.readline()   -----> 每次读取一行

f.readlines()  ----> 读取文件所有行,生成一个列表,每行为一个元素(只适合于读小文件)

f.tell()   ----> 当前文件所在的指针,按字符个数计数

f.seek(0)  -----> 指针回到最开始位置

f.encoding  -----> 文件字符编码

f.seekable  ----->  判断是否能移动指针位置(True/False)

f.flush()   ------->  写入文件时不一定及时写入到硬盘,可能还在缓存中,flush可以用于刷新使之写入到硬盘(缓存写到一定值才会写入硬盘)

f.truncate(10)   ------>  从头开始截断,不管指针在哪

##### example #######(内存中只保存一行,可读取大文件,读一行覆盖一行)

for line in f:

print(line)

########## 打印进度条 ##########

import sys,time

for i in range(50):

sys.stdout.write("#")

sys.stdout.flush()

time.sleep(0.1)

r只读;r+可读可写;两都都不创建

w新建只写,不能读;

w+新建读写,二者都会将文件内容清零

w+与r+区别:r+: 可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建

########### r+与a+区别 ############

fd = open("1.txt",‘w+‘)

fd.write(‘123‘)

fd = open("1.txt",‘r+‘)

fd.write(‘456‘)

fd = open("1.txt",‘a+‘)

fd.write(‘789‘)

结果:456789

说明r+进行了覆盖写。

以a,a+的方式打开文件,附加方式打开

(a:附加写方式打开,不可读;a+: 附加读写方式打开)

以 ‘U‘ 标志打开文件, 所有的行分割符通过 Python 的输入方法(例#如 read*() ),返回时都会被替换为换行符\n. (‘rU‘ 模式也支持 ‘rb‘ 选项) .

r和U要求文件必须存在

不可读的打开方式:w和a

若不存在会创建新文件的打开方式:a,a+,w,w+

函数数初识

1、函数优点

(1) 减少重复代码

(2) 代码统一性

(3) 可扩展性

2、非固定参数

def test1(x, *args):

print(x)

print(args)

def test2(x,**kwargs)

print(x)

print(kwargs)

*args  ----> 接收位置参数变成了元组(包括字典,元组)

**kwargs  -----> 接收关键字参数转成字典

注意: 关键字参数不能写在位置参数前面

3、形参和实参

4、局部变量与全局变量

局部变量只在函数里生效,不会改变全局变量的值

school = "oldboy"

def change_name(name):

global school    # 定义全局变量可更改school

school = "Mage"

print("before change",name,school)

name = "Alex Li"

print("after change",name)

change_name(‘alex‘)

print(school)

>>> before change alex Mage

>>> after change Alex Li

>>> Mage

字符串跟整数不能在函数中改全局变量,列表、字典、集合都是可以在函数里面改的

注意: 不应该在函数中改全局变量

5、递归特性

(1) 必须有一个明确的结束条件

(2) 每次进入深一层递归时,问题规模相经上次递归都应有所减少

(3) 递归效率不高,递归层次过多会导致栈溢出

6、函数与函数式编程

面向对象 ---> 类 ----> class

面向过程 ----> 过程 ----> def

函数式编程 ----> 函数 ----> def

函数式编程:只要输入是确定的,输出也是确定的

时间: 2024-10-09 10:04:13

Python自动化开发03的相关文章

老男孩教育Python自动化开发精英班-开班典礼感想

2016年1月14日   老男孩教育Python自动化开发精英班-第一天 期待中的老男孩教育Python自动化开发精英班开办了. 我知道对于我这个年龄进入这个班意味着什么?首先,精力不如年轻人,其次,单位繁杂的事务性工作较多.所以,从现在起必须对工作处理更加效率,休息时间要进行压缩,否则就不能腾出更多的时间学习,压力还是很大的. 我知道,在这个班中都是些年轻人,大家都为了掌握一门具备前瞻性.实用性和就业面宽广的本事而来,以后可以在社会上有更多的.更好的和收入可观的发展机会.有人问了,你都快退休了

Python自动化开发,Day10 - 进程、线程、协程

本章内容 操作系统发展史介绍 进程与线程的区别 python GIL全局解释器锁 线程 语法 join 线程锁Lock\Rlock\信号量 将线程变为守护进程 Event时间 Queue队列 生产者消费者模型 进程 语法 进程间通讯 进程池 一.操作系统发展史介绍 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 手工操作 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存

Python自动化开发课堂笔记【Day15】- Django基础

WEB框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回. 如果要动态生成HTML,就需要把上述步骤自己来实现.不过,接受HTTP请求.解析HTTP请

Python自动化开发-简介

一.简介 1.背景知识 Python是一门简明并强大的面向对象的编程语言. WEB开发.软件开发.科学运算.大数据分析.自动化运维等方面广泛使用 主流语言的区别和特点 C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动.嵌入式.游戏引擎开发等领域有广泛的应用 Java:目前使用最广泛的编程语言,第一个跨平台的语言,在大型ERP软件开发\安卓APP开发\网站开发领域使用广泛 Python:使用领域几乎和Java一样广泛,但开发效率要高于Java,且学习成本较低,在科学运算\数据分析\网

Python自动化开发 - Django基础

本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器就是一个socket客户端 #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("

Python自动化开发学习12-MariaDB

关系型数据库 主流的关系型数据库大概有下面这些: Oracle : 甲骨文公司的企业级的数据库 SQL Server : 微软的 MySQL : 免费的数据库,现在也属于Oracle的旗下产品 MariaDB : 开源的数据库,MySQL的一个分支 PostgreSQL : 也是开源的 SQLite : 一款轻量级的数据库 DB2 : IBM的 RDBMS 术语 RDBMS(Relational Database Management System)即关系数据库管理系统,在开始之前,先了解下RD

python自动化开发-2

1.python的数据类型之列表 列表是Python开发语言中最常见的数据类型之一,通过列表可以实现对数据的增删改等常用操作. 列表的定义:例子 names = ["Lucy","Lily","jack"] 列表的常用功能 1)取出列表中的元素:例子 取出列表的第二个元素:通过下标的方式,下标从0开始计数. 取出列表的最后一个元素: 2)切片:例子

Python 自动化开发_简介

一.python  介绍 Python  简介[前世今生]: python的创始人是吉多·范罗苏姆(Guido van Rossum).于1989年的圣诞节期间开发的一个新脚本程序.作为ABC语言的一种继承. 为什么要学习python呢: 我的理解不是为什么要去学python.而是学习python能给你带来什么乐趣.每个人的求知欲不一样.所以看个人理解.简单点说对于运维的同学来说,学了python后不止自己的收入可以变得客观,也会使自己的工作变得很轻松.当然某些人可能会说我会shell编程就够了

Python自动化开发,Day1 - Python基础1

本章内容 Python是什么? Python的发展史 Python2与3的区别 Python的语言类型 Python的优缺点 一.Python是什么? Python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.之所以选中Python作为该编程语言的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者. 最新的TIOBE排行榜中,Python赶超