集合类型:

  集合类型中的元素是唯一的!

集合的定义与赋值:

 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

file.close()

关闭文件。一个关闭的文件无法读取或写入任何东西。
2

file.flush()

刷新内部缓存,像标准输入fflush。这可能是一些类文件对象的一个空操作。
3

file.fileno()

返回所使用的底层实现,从操作系统I/O操作的整数文件描述符。
4

file.isatty()

如果文件被连接到一个tty(状)装置则返回True,否则返回False。
5

next(file)

返回每次被调用时文件中的下一行。
6

file.read([size])

从文件读取大小最多字节(或更少,如果它们获得大小字节之前读取命中EOF)。
7

file.readline([size])

从文件中读取一整行。结尾的换行符保持的字符串中。
8

file.readlines([sizehint])

读取直到EOF使用 ReadLine()并返回一个包含行的列表。如果可选sizehint参数存在,而不是读取到EOF,全行共计约sizehint字节(四舍五入到内部缓冲区大小后可能)被读取。

9

file.seek(offset[, whence])

设置该文件的当前位置
10

file.tell()

返回文件的当前位置
11

file.truncate([size])

截断文件的大小。 如果size参数存在,则文件被截断为(至多)该尺寸。

12

file.write(str)

将一个字符串写入该文件。没有返回值。
13

file.writelines(sequence)

写入字符串序列到文件。该序列可以是一个迭代对象的字符串 - 典型字符串列表。

打开文件:

# 不需要关闭文件,对文件的操作全部在子代码块中完成即可
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,确实很不一样。

函数式编程:

  简单说,"函数式编程"是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。
  它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。

那些年被我坑过的Python——摩拳擦掌(第三章)的更多相关文章

  1. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  2. 那些年被我坑过的Python——一夫当关 第十三章(堡垒机初步设计)

      堡垒机架构 堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必 ...

  3. 那些年被我坑过的Python——你来我往(第九章 selectors)

    进程.线程.协程(微线程).队列的概念理解 进程进程是所有相关资源的集合,而线程是和CPU交互的最小单元进程至少包含一个线程,是主线程线程线程之间可以共享资源线程同时修改同一份数据时必须加锁,mute ...

  4. Python【第三章】:python 面向对象 (new)

    面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实 ...

  5. [Python笔记][第三章Python选择与循环]

    1月28日学习 Python选择与循环 选择结构 多分枝选择结构 if 表达式 1: 语句块 1 elif 表达式 2: 语句块 2 elif 表达式 3: 语句块 3 ... else : 语句块 ...

  6. Python学习第三章

    1.模块: 其实每个.py文件本身就是一个模块,当读者做完了一个.py文件,如果别人打算直接分享你的成果,只要在他编写的.py文件中倒入(import)就好了. 比如想在hello1.py文件里直接使 ...

  7. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  8. Python基础 第三章 使用字符串(3)字符串方法&本章小结

    字符串的方法非常之多,重点学习一些最有用的,完整的字符串方法参见<Python基础教程(第三版)>附录B. 模块string,虽然风头已小,但其包含了一些字符串方法中没有的常量和函数,故将 ...

  9. Python笔记·第三章—— 逻辑运算

    一.逻辑运算符的种类及优先级 ▷逻辑运算符包括 not and or  ▷他们的优先级是 () > not > and > or 二.普通逻辑运算 ▷A and B --->  ...

随机推荐

  1. java对Ldap操作1

    package ldap;import java.util.List;import ldap.pojo.LdapPersonInfo;/** * access Ldap *  * @author 张亮 ...

  2. Android学习之 sildingmenu

    仿SlidingMenu Android抽屉菜单效果drawer menu - appdoll.com Android "多方向"抽屉 - 开源中国社区 自定义Android滑动式 ...

  3. android 13 5种click事件不同实现方式 比较

    第一种:不便于管理. <Button android:id="@+id/btn_Gridlayout" android:layout_width="match_pa ...

  4. U盘安装centos 6.4教程(总算是弄好了

    参考:http://blog.chinaunix.net/uid-27666459-id-3342477.html http://www.linuxidc.com/Linux/2011-05/3569 ...

  5. Fragment之我的解决方案:Fragmentation

    Fragment系列文章:1.Fragment全解析系列(一):那些年踩过的坑2.Fragment全解析系列(二):正确的使用姿势3.Fragment之我的解决方案:Fragmentation 如果你 ...

  6. 10.23 noip模拟试题

    尼玛蛋pdf好难粘 直接写了 T1 /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/ #include<cstdio> #include< ...

  7. PL/SQL 批量SQL

    批量SQL包括: FORALL语句 BULK COLLECT子句 FORALL语句 FORALL具有如下结构: FORALL loop_counter IN bounds_clause [SAVE E ...

  8. JAAS - Document

    JAAS 参考文档: JAAS Reference Guide JAAS Authentication Tutorial JAAS Authorization Tutorial LoginModule ...

  9. Visual C#实现Windows信使服务

    现在有很多网络管理软件都具备网络上信息实时传送的功能,虽然有些网络通讯软件功能比较强大,有的软件不仅可以传送文本信息,还可以传送二进制文件等.但 它们都有一个无法克服的缺点,那就是分发比较困难,信息传 ...

  10. Datatables+Bootstrap

    http://sandbox.runjs.cn/show/thwac3ec 运行效果 <!DOCTYPE html> <html lang="en"> &l ...