Python Day3

本章内容:

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)#打印剩下的

那打开文件后,内容是空的,我需要将这个文件的内容写入东西,怎么写?

我们先来看看文件处理权限的问题:

打开文件的模式有:

  • 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

在这种模式中,打开文件的时候我们需要关闭文件(.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(慎用)

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
 
3.返回值
在函数运行的过程当中,想让他返回一个参数,看看函数运行的对不对(return)

要想获取函数的执行结果,就可以用return语句把结果返回

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
  2. 如果未在函数中指定return,那这个函数的返回值为None

4.递归函数

什么是递归函数?

递归函数指的是自己调用自己,咱们之前讲了函数调用其它的函数,那么我们来看看函数递归自己的函数

5.高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x,y,f):
    return f(x) + f(y)


res = add(3,-6,abs)
print(res)

 

原文地址:https://www.cnblogs.com/AbeoHu/p/5747300.html