那些年被我坑过的Python——摩拳擦掌(第三章)
集合类型:
集合类型中的元素是唯一的!
集合的定义与赋值:
set_1 = set([1, 3, 5, 7, 2])
set_2 = set([2, 4, 6, 8, 3])
集合的运算操作
# 交集
print(set_1.intersection(set_2))
# 并集
print(set_1.union(set_2))
# 差集
print(set_1.difference(set_2))
# 互相差的并集
print(set_1.symmetric_difference(set_2))
# 无交集判定
print(set_1.isdisjoint(set([9,11])))
# 子集判定
print(set([1,3]).issubset(set_1))
# 父集判定
print(set_1.issuperset(set([1,3])))
集合的增删改查:
# 交集
print(set_1.intersection(set_2))
# 并集
print(set_1.union(set_2))
# 差集
print(set_1.difference(set_2))
# 互相差的并集
print(set_1.symmetric_difference(set_2))
# 无交集判定
print(set_1.isdisjoint(set([9,11])))
# 子集判定
print(set([1,3]).issubset(set_1))
# 父集判定
print(set_1.issuperset(set([1,3]))) # 增加元素:
# 如果元素已经存在则不做任何改变
set_1.add(3)
print(set_1) # 更改更新:
# 合并并更新
set_1.update(set_2)
# 将计算后的结果更新到原集合
set_1.difference_update(set_2)
set_1.intersection_update(set_2)
set_1.symmetric_difference_update(set_2)
print(set_1) # 删除元素:
# 如果不存在也不报错
set_1.discard(9)
# 元素不存在时会报错,对比discard()
set_1.remove()
# 随机删除一个元素
set_1.pop()
# 清空集合内元素
set_1.clear()
文件的操作
os.path 模块中的路径名访问函数
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回(dirname(), basename()) 元组
splitdrive() 返回(drivename, pathname) 元组
splitext() 返回(filename文件名, extension后缀) 元组
信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)
查询
exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否为绝对路径
isdir() 指定路径是否存在且为一个目录
isfile() 指定路径是否存在且为一个文件
islink() 指定路径是否存在且为一个符号链接
ismount() 指定路径是否存在且为一个挂载点
samefile() 两个路径名是否指向同个文件
os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):获得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名与扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径
os模块中的文件操作:
1.重命名:os.rename(old, new)
2.删除:os.remove(file)
3.列出目录下的文件:os.listdir(path)
4.获取当前工作目录:os.getcwd()
| SN | 方法以描述 |
|---|---|
| 1 |
关闭文件。一个关闭的文件无法读取或写入任何东西。
|
| 2 |
刷新内部缓存,像标准输入fflush。这可能是一些类文件对象的一个空操作。
|
| 3 |
返回所使用的底层实现,从操作系统I/O操作的整数文件描述符。
|
| 4 |
如果文件被连接到一个tty(状)装置则返回True,否则返回False。
|
| 5 |
返回每次被调用时文件中的下一行。
|
| 6 |
从文件读取大小最多字节(或更少,如果它们获得大小字节之前读取命中EOF)。
|
| 7 |
从文件中读取一整行。结尾的换行符保持的字符串中。
|
| 8 |
读取直到EOF使用 ReadLine()并返回一个包含行的列表。如果可选sizehint参数存在,而不是读取到EOF,全行共计约sizehint字节(四舍五入到内部缓冲区大小后可能)被读取。 |
| 9 |
设置该文件的当前位置
|
| 10 |
返回文件的当前位置
|
| 11 |
截断文件的大小。 如果size参数存在,则文件被截断为(至多)该尺寸。 |
| 12 |
将一个字符串写入该文件。没有返回值。
|
| 13 |
写入字符串序列到文件。该序列可以是一个迭代对象的字符串 - 典型字符串列表。 |
打开文件:
# 不需要关闭文件,对文件的操作全部在子代码块中完成即可
with open() as f:
# 下面这种方式需要显式的关闭文件才行
f = open()
f.close()
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
读文本文件:
#后两个参数是默认的,可以不加
input = open('data', 'r',encoding='utf-8')
读二进制文件:
input = open('data', 'rb')
读取所有文件内容:
# 直接使用 in 获取文件中的行即可
for line in f:
print(line.strip())
读每行 :
file_object.readlines() #不推荐,因为这需要将全部文件内容加载到内存中,如果文件特别大的时候对性能影响很大!
读取固定字节 :
open('abinfile', 'rb').read(100)
函数的定义:
# 通过def和()定义函数,()中为函数的参数,定义函数式的参数为形式参数
# foo为函数的逻辑代码块
# return bar 中的bar为函数的返回值
def func(argument1,argument2...):
foo
return bar
函数的参数,实参与形参:
如上所述形参就是函数定义时候()中定义的参数名称,而实参是指函数调用时候使用的,实际传入的参数。
函数的位置参数、关键字参数和不固定参数:
调用函数传入参数的时候,如果不指定关键字,默认是按参数定义的顺序依次传入,这种方式传入的参数称为位置参数;
func(1,'xiaoming')
调用函数时可以根据形参名称使用=将值传入,这种方式称为关键字参数;
func(id=1,name='xiaoming')
不固定参数有两种分别是可传入列表的等价于位置参数的*args,定义形参的时候增加一个*args参数用来接收不固定数量的参数,便于函数的扩展。
def func(name,*args):
foo func(name='abc',*[1,2,3,4])
第二种是使用**kwargs来标识,可以接收字典类型的输入,等价于不固定个数的关键词参数的使用。当然这两种方式在函数调用的时候也是需要使用*或者**进行标识。
def func(**kwargs)
func(**{'id':1,'name':'xiaoming'})
实参传入的原则:关键字参数不可以在位置参数之前,不固定参数在最后。
函数的返回值:
函数的返回值是区别于过程是编程的一个典型特点,返回值的作用可以是返回函数的状态,可以返回函数的处理结果,还可以调用其他的函数,当然执行return代表着函数全过程的结束。
def func(a,b):
if foo:
return a
else:
return b
高阶函数:
1、变量可以指向函数;
2、函数的返回值可以是函数;
3、一个函数可以接收另一个函数作为参数;
def func(a,b,f):
return f(a)+f(b)
递归特性:
1、 必须有一个明确的结束条件
2、 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3、 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
变量的作用域:
变量可以分为全局变量和局部变量,全局变量的定义是在函数外,或者使用global 关键词来标识一个变量。
顾名思义全局变量的作用域是全局,即当前py文件中变量定义位置之后的任何位置,都可以引用这个变量。
局部变量是指尽在局部生效的变量,比如函数中定义的变量尽在函数内部有效(global标识的除外),这与shell中的变量有很大不同,shell中的变量都是全局变量,函数中如果要标识局部变量还需要使用关键词local,确实很不一样。
函数式编程:
那些年被我坑过的Python——摩拳擦掌(第三章)的更多相关文章
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 那些年被我坑过的Python——一夫当关 第十三章(堡垒机初步设计)
堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必 ...
- 那些年被我坑过的Python——你来我往(第九章 selectors)
进程.线程.协程(微线程).队列的概念理解 进程进程是所有相关资源的集合,而线程是和CPU交互的最小单元进程至少包含一个线程,是主线程线程线程之间可以共享资源线程同时修改同一份数据时必须加锁,mute ...
- Python【第三章】:python 面向对象 (new)
面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实 ...
- [Python笔记][第三章Python选择与循环]
1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...
- Python学习第三章
1.模块: 其实每个.py文件本身就是一个模块,当读者做完了一个.py文件,如果别人打算直接分享你的成果,只要在他编写的.py文件中倒入(import)就好了. 比如想在hello1.py文件里直接使 ...
- 路飞学城-Python开发-第三章
# 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...
- Python基础 第三章 使用字符串(3)字符串方法&本章小结
字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...
- Python笔记·第三章—— 逻辑运算
一.逻辑运算符的种类及优先级 ▷逻辑运算符包括 not and or ▷他们的优先级是 () > not > and > or 二.普通逻辑运算 ▷A and B ---> ...
随机推荐
- Cookie 和Session
会话: 简单理解: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话要解决的问题: 每个用户与服务器进行交互的过程中,各自会有一些数据,程序 ...
- 用if做了一个简单的猜拳游戏(做的不好还请指点,谢谢!)
#include "stdio.h" #include "stdlib.h" #include "time.h" //随机函数的头文件 ma ...
- memcache基本讲解
Memcached技术 介绍: memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 在memachec 中维护 ...
- CSS3动画变形Animations
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- iOS开发总结-搜索功能实现--使用SKTag
TagsTableViewController.h 文件 #import <UIKit/UIKit.h> #import "personSearch.h" @inter ...
- Android如何在Framework层使用解锁代码
import android.app.KeyguardManager; import android.app.KeyguardManager.KeyguardLock; import com.andr ...
- MapReduce分析明星微博数据
互联网时代的到来,使得名人的形象变得更加鲜活,也拉近了明星和粉丝之间的距离.歌星.影星.体育明星.作家等名人通过互联网能够轻易实现和粉丝的互动,赚钱也变得前所未有的简单.同时,互联网的飞速发展本身也造 ...
- Java实现常见排序算法
常见的排序算法有冒泡排序.选择排序.插入排序.堆排序.归并排序.快速排序.希尔排序.基数排序.计数排序,下面通过Java实现这些排序 1.冒泡排序 package com.buaa; import j ...
- eclipse 常见问题及解决
1. Target runtime Apache Tomcat v6.0 is not defined.错误解决方法 原文:http://blog.csdn.net/xw13106209/articl ...
- IOS的工程目录结构和生命周期
IOS的工程目录结构和生命周期 ·simple table文件夹:工程相关源代码和配置文件 BIDAppDelegate : 委托的声明和实现 BIDViewController: 视图控 ...