标签:
本章内容:
1.集合
2.Python文件处理
3.函数
1.集合(set):
集合是一个无序的,不重复的数据组合,它的主要作用如下:
首先来创建个集合:
a = set([3,5,6,9])#集合是无序的
创建一个唯一字符的集合
b = set("Hello") 结果 {‘l‘, ‘e‘, ‘H‘, ‘o‘}
发现Hello少了一个l,这是什么情况?
因为在集合中,集合有一个特点就是去重,去重就是去掉重复的东西
那咱们来看看集合的字符有哪些?
| 并集 (就是将a和b的值合并起来)
print(a | b)
s.union(t)
& 交集(将a和b之间重复的值打印出来)
print(a & b)
s.intersection(t)
- 差集(将a和b之间不一样的值打印出来)
print(a - b)
s.difference(t)
^对称差集(将a和b所有重复的值去掉,然后把剩下的打印出来)
print(a ^ b)
s.symmetric_difference(t)
在集合里面添加元素(add)
a.add(2222)
批量添加(update)
a.update([1,2,3,444444])
在集合里面删除元素(remove,pop)
remove指定删除
a.remove(2222)
pop随机删除
a.pop()
二.Python文件处理
在工作中,我们也会需要用到用python来打开文件,处理些文件内容,就像windows的记事本一样,可以添加,可以删除,可以修改
通过python打开一个新文件(open):
open("xiaohu",encoding="utf-8")
# _author_=AbeoHu f=open("xiaohu",encoding="utf-8")#以utf-8格式打开文件 f1=f.readline()#默认是第一行 df = f.read() print(f1)#打印第一行 print("------------------------") print(df)#打印剩下的
那打开文件后,内容是空的,我需要将这个文件的内容写入东西,怎么写?
我们先来看看文件处理权限的问题:
打开文件的模式有:
"+" 表示可以同时读写某个文件
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
在这种模式中,打开文件的时候我们需要关闭文件(.close),还有一种方法是专门自动关闭文件的语法(with)
with open("xiaohu",‘w‘,encoding="utf-8") as f: f.write()
OK,那我们现在先来实现一些小功能:
1.在文件的第20行添加一串字符
2.去掉文件第23行的空行(strip)
3.打印一个小程序(进度条)(flush,time模块)
flush刷新
time模块(定义时间)
import sys,time for i in range(20): sys.stdout.write("#") sys.stdout.flush() time.sleep(0.1)
三.函数
什么是函数?
函数
在日常写代码的时候,我们有很多需要重复运用得代码,那每回调用相同代码的时候,我们就可以用函数来代替。
函数的优势:
1.减少重复代码
2.使程序变得可扩展
3.让程序变得易维护
首先我们先来定义一个函数:
def test(): print("老狗去砍柴") test()
这是一个简单的一个函数定义,那么我们来写一个程序,来调用这个函数:
def test(): print("老狗去砍柴") print("老狗干嘛去了?") test()
那么,我能从另一个文件中调用函数吗?
函数的3个面向:
1 面向对象-------------类------------------class
2 面向过程-------------过程----------------def
3 函数编程-------------函数----------------def
面向过程没有返回值,面向函数有返回值
那如果函数嵌套函数怎么写?
# _author_=AbeoHu def test(): print("老狗去砍柴") def test1(): print("老狗去吃饭") def test2(): test()#嵌套第一个函数 test1()#嵌套第二个函数 test2()
函数也可以应用传参:
传参指的是自己可以传递参数:
def test(x,y): print(x+y) test(1,2)
那如果我在里面定义了x的参数,那他是按照里面的来,还是你传递的参数来指定呢?
def test(x,y): x=4 print(x+y) test(1,2)
他是按照里面定义的参数来,因为函数在里面已经指定了x的值,所以在调取的时候也不会改变,只会改变没有的值
2.函数的参数和局部变量:
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
def test(x,y):#行参 print(x+y) test(1,2)#实参
默认参数:
def test(name,age,school): print(name,age,school) test("小虎","22","linux") test("呵呵","22","linux") test("AbeoHu","22","linux")
默认参数指的是按照你函数定义参数的顺序来决定的,一一对应
关键参数:
正常情况下,你传递参数的时候按照正常顺序来传参的,那如果想自己定义,可以自己去定义关键参数:
注意:关键参数一定要放到位置参数的后面
def test(age,school,name="xiaohu"): print(name,age,school) test("22","linux") test("22","linux") test("22","linux")
非固定参数:
如果我想在函数后面加很多参数,而且我不是固定的,那么就要用到非固定参数了:
*args 传入的参数变成元组格式
def test(name,*args): print(name,args) test("xiaohu",1,2,3,4,5,6)
*.arg传入的格式是元组,如果我想传入字典格式:
**kwargs
def test(name,**kwargs): print(name,kwargs) test("xiaohu",qiqi=1,meng=2)
局部变量:
局部变量的作用只是在一个作用域当中:
name = "AbeoHu" def change(name): print(name) name = "AbeoHu bangbangbang"#定义新的变量 print(name) change(name) print(name)#在外面打印看看变了没有
输出:
AbeoHu
AbeoHu bangbangbang
AbeoHu
name值只是在里面变了,出去函数之后,还是原来的变量,这就是局部变量.
那怎么将局部变量变成全局变量呢?
global(慎用)
全局与局部变量
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
4.递归函数
什么是递归函数?
递归函数指的是自己调用自己,咱们之前讲了函数调用其它的函数,那么我们来看看函数递归自己的函数
5.高阶函数
变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def add(x,y,f): return f(x) + f(y) res = add(3,-6,abs) print(res)
标签:
原文地址:http://www.cnblogs.com/AbeoHu/p/5747300.html