wxg学习笔记-老男孩day3

字符串:不可在原内存上修改

一、集合

1. 集合的主要功能:

(1)去重:把一个列表变成集合,就自动去重了

(2)关系测试:测试两组数据之间的交集、差集等。

集合是无序的,所以也没有位置下标。

2.  集合操作

A.intersection(B) ——求交集,等价于A&B

A.union(B)——求并集,等价于A|B

A.difference(B)——求差集(A中有,B中无)等价于A-B

A.issubset(B)——判断A是不是B的子集 等价于  A<=B

A.issuperset(B)——判断A是不是B的父集,等价于A>=B

A.symmetric_different(B)——求A、B交集的补集,等价于A^B

A.isdisjoint(B) 判断A和B是否无交集

A.add(项)在集合中添加一项

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

A.remove(项),删除项

A.pop(项),随机删除一项并返回该项。

A.disgard(项),项存在就删除,不存在就跳过

 

二、文件操作

1.文件打开格式1

 

此种方式打开后不会自动关闭,除非程序运行结束。所以需要人为关闭,即加上f.close()语句

2.文件打开格式2

1 with open('文件名','打开方式',编码方式) as f:
2 
3 同时打开多个:
4 with open('log1') as obj1,open('log'2)as obj2:

 

3.文件的打开方式:

r:只读

w:只写,若已经有内容则擦除再写

rb:只读二进制

wb:只写二进制

a:在文件内容末尾增加内容

r+:读写,= a+r

w+:写读,= w+r

a+:追加读写

 

3.文件读取:

将整个文件读取为字符串:

data = f.read()

读完后,f内指针指向最后,若此时再次读取:

data2 = f.read()

由于指针已经在最后,所以data2没有内容。

 

4.读取文件的循环方式:

1 for line in f:
2     print(line)

其中f不是列表,二是迭代器,想将文件存为列表需要写逐行存入列表语句。

f.tell()——返回文件句柄指针所在位置

f.read(数)——可读指定个数字符,并将指针停留在相应位置

f.seek()将指针返回到特定位置,一般是返回到开头,即默认0.

f.encoding ——返回编码规则

f.truncate(数)——从开始截取指定数量的内容,多出部分删除。

f.flush()——将内容由内存强制(实时)刷到硬盘上

打印进度条

 

三:字符编码(待完善)

不同字符编码之间相互转换都要经过unicode,python 2.x中默认的编码方式是ascii,故要在开头声明使用utf-8才能正确显示中文,python3.x中默认的编码方式是unicode,故不需要声明。

# -*- coding:utf-8 -*-

四、函数

1. 面向对象:以“类”为特征

    面向过程:以“过程”为特征

    函数式编程:以“函数”为特征,“函数式”指的是一种方法论。

 

过程和函数的区别:

过程没有返回值(仅定义一些操作),函数有返回值(return),python中过程就是没有返回值(return none)的函数。

使用函数的优点:1.代码重用,2.保持一致性,3.可扩展性

 

2. 返回值:函数返回一个执行结果,便于下一步操作。

python可返回多个值:

return 1,'a','weng',['a','b']

当返回多个值时,其实返回的是一个元组。

返回值数量=0:返回none

返回值数量=1:返回object

返回值数量>1:返回tuple

注:函数中return之后的语句得不到执行,即函数执行到return就停止。

 

3.函数调用:

位置参数:位置实参按照顺序传给位置形参

 

关键字参数:关键字参数可不按顺序调用

test(y=2,x=1)

关键字参数和位置参数混用时,关键字参数必须放在位置参数之前,同时应该避免关键字参数和位置参数重复比如

test(1,x=2)(两个参数都传给了x)

默认参数:调用函数时,若不传入则使用默认值。默认参数在调用时可以不写。

 

 可变参数:当参数个数不确定的时候,在定义函数时,采用“*参数名”(一般是*args)的形式作为可变参数,可以接收若干个不同的实参。

 

键-值对参数:**kwargs

实参以:key=value的形式出现,被当做键值对处理为一个字典

当出现多类型参数,编写顺序为:位置参数——默认参数——可变参数:

 

五、局部变量和全局变量

局部变量:子程序(往往是函数)中定义的变量,只在子程序内起作用,子程序就是该变量的作用域。

全局变量:要在第一层定义,对于Int和str类的全局变量,不能通过局部变量修改,其他类型如list等则可以通过局部变量,即函数内部修改。

 在函数中修改全局变量的方法:

 六、

递归函数:函数在内部调用本身

1. 特征:(1)必须有一个明确的结束条件 (2)每进入更深一层递归时,问题规模相比上一层都应有减少(3)递归效率不高,容易栈溢出。

 

七、

高阶函数:变量可以指向函数,函数的参数能接收变量,一个函数接收另一个函数最为参数,则为高阶函数。

高阶函数主要分为两类:(1)把函数名当做参数传给另外一个函数

(2)返回值中包含函数名

 1 import time
 2 def bar():
 3     time.sleep(2)
 4     print("in the bar")
 5 
 6 def test2(func):
 7     print(func)
 8     return func #返回func的内存地址,即原本bar()的地址
 9 bar = test2(bar)
10 bar()

 八、嵌套函数

在函数定义中定义新函数。

def fool():
    print('in the foo')
    def bar():
        print('in the bar')

bar()是在fool()中定义的函数,执行fool()时,就会定义这个bar(),但是bar()不会在执行fool时执行,因为执行fool()只是定义bar()。要执行bar()需要在fool()中返回bar()地址。然后执行。

转载于:https://www.cnblogs.com/wengxinguang/p/7246623.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值