python note #3
Hello, guys! I found it pretty difficult to get my content according to my key words. So in this note, I'd like to optimize my key word to do some help.
Content
- set: logical relation between sets; sets operation
- file: file operation, including append, delete, modify and seek
- encode & decode
- function: definition, use, create, variety, recursive function and higher-order function
Part 1_SET
There are some codes to judge the relation between sets, involving intersection, union, difference, subset, superset. Also, sometimes sets need to be operated. Thus, some operations in sets like append and delete are worth our attention. Because they are really easy to understand and use, codes are presented directly below:
Part 2_FILE
1 open & close
To open a file, command of open can be used and give the file value to a named variety. However, there are multiple modes to open a file, which decide how the file can be operated. Thus, these modes include:
r: files can only be read;
r+: files would be read first and append is allowed, most commonly use;
rb: binary file, mainly used to open a binary file like net transferring file to prevent corrupting;
w: create a file and write something new into the file, but cannot be read;
w+: files would be wriiten first and read in the followting;
a: append sth. new into the file;
a+: append sth. new into the file and can be read;
And the complete code to open and close a file shows below:
f = open('time after time','r+')
f.write('hello binary'.encode())
f.close()
But sometimes, we always forget to use .close() to close a file. To prevent this from happening, the best way to open a file is with open:
import sys # 自动关闭文件
with open('lyric','r',encoding='utf-8') as f1,\
open ('lyric.bak','r',encoding='utf-8') as f2:
for line in f1:
print(line)
for content in f2:
print(content)
2 operation: read & write
Several modes can be used to read a file, including read, readline, readlines. And codes can most clearly show their use:
# 读取5行数据并打印
for i in range(5):
print(f.readline()) # 将每行存成列表进行读取,readlines只适合于读小文件
for index,line in enumerate(f.readlines()):
if index == 9:
print('---------我是分割线--------')
continue
print(line.strip()) # improve last loop, making it possible to only store a line each time.
count = 0
for line in f:
if count == 3:
print('--------hhhhhhh-----------')
count += 1
continue
count += 1
print(line)
Usually, there is a pointer in the system to locate the file' content you're trying to operate. So we can use .tell() to tell the pointer's location anc use .seek() to get back to some specific position.
with open('lyric','r',encoding='utf-8') as f1,\
open ('lyric.bak','r',encoding='utf-8') as f2:
for line in f1:
print(line)
for content in f2:
print(content)
print (f.tell()) # output the pointer's location of the file handle
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())
f.seek(0) # tell--pointer's location; seek--back to some position; use both together usually
print(f.readline())
pointer
3 others
there are some other operations, like replace:
f = open('lyric','r',encoding = 'utf-8')
f_new = open('lyric.bak','w',encoding = 'utf-8')
for line in f:
if'大大的世界上'in line:
line = line.replace('大大的世界上','aaaaayoyoyoyo')
f_new.write(line)
f.close()
f_new.close()
replace
flush: it's better to add .flush() in the file code to help update and store. Besides, flush can be used to do some pretty interesting things. For example, flush can show the process of loading sth.
'''
利用flush显示进度条,stdout--标准输出,time.sleep--调整时间间隔
import sys以及time模块,显示进度条
''' import sys,time for i in range(50):
sys.stdout.write('#')
sys.stdout.flush()
time.sleep(0.1) # 设定刷新周期
flush
Part 3_ENCODE&DECODE
In this part, only one thing worth remembering: Unicode is the key to all. We can use .decode() to get to the unicode from other types and .encode() to get to the other coding types from unicode.
Part 4_FUNCTION
1 return
After defining a function, it's pretty important to use return to return a value. Because we need a result for the proof of executing a function.
# function
def func1():
'testing1'
print('in the func1')
return 0 # process: is a function without return
def func2():
'testing2'
print('in the func2') def func3():
'testing 3: return type,可以return任何东西'
print('in the func3')
return 0,'hello world',['hello',23],{'name':'Eva'} x = func1()
y = func2()
z = func3() print(x)
print(y)
print(z)
function&return
2 parameter
There are 2 parameters in the function. In the definition part, we need to define formal parameters. While using, actual parameters need to be defined. Besides, if parameters are input directly when invoking a function, they are named location parameters and one-to-one match with formal parameters. Also, key parameters can be used and location is not that important while using key parameters.
# (m,n)形参;(1,2)实参;一一对应
def test(m,n):
print(m)
print(n) # 位置参数调用
test(1,2) # 关键参数调用,关键字参数不能写在位置参数前面
test(n=5,m=7) # 默认参数特点:调用参数,默认参数非必须传递
# 用途:默认安装值;默认主机服务端口
def test2(i,k=7):
print(i)
print(k) test2(3)
parameters
3 *args & **kwargs
Well, sometimes, we are not that sure about the number of actual parameters. And then, *args & **kwargs can be used to transform parameters into tuple or dictionary.
# 实参数目不固定==》参数组,将其变成元组,*后面内容随意但最好是args
# *args接收的是位置参数,无法接收关键字参数
def test3(*args):
print(args) test3(1,3,6,5,4,2,8)
test3(*[1,3,6,5,4,2,8]) def test4(p,*name):
print(p)
print(name) test4(1,3,6,5,4,2,8) # N个关键字参数转换成字典--**kwargs,参数组往后放
def test5(**kwargs):
print(kwargs)
print(kwargs['nickname'])
print(kwargs['age'])
print(kwargs['gender']) test5(nickname = 'Eva',age = 66, gender = 'F')
test5(**{'nickname':'Eva','age':66, 'gender':'F'})
*args & **kwargs 1
# 需要先定义,再调用
# def test5(**kwargs):
# print(kwargs)
# print(kwargs['nickname'])
# print(kwargs['age'])
# print(kwargs['gender'])
# print(logger())
#
# test5(nickname = 'Eva',age = 66, gender = 'F')
#
# def logger(source):
# print('from %s' % source)
**kwargs 2
4 variety
The scope of the variety defined in a function can only be used in this function. If we want use it, we need to global the variety.
school = 'UUU' # 除了字符串和整数,列表、字典、集合、类都可以在函数的局部变量中直接修改全局变量
def change_name(name):
global school #如果想将局部变量作用于全部程序,要用global
school = 'xxx'
print('before change:',name,school)
name = 'Eva Han' #局部变量:这个函数就是这个变量的作用域
print('after change:',name) print(school)
name = 'eva'
change_name(name)
print(name)
local & global variety
5 recursion function
It's a function that would involk itself in the definition.
'''
递归:一个函数自我调用
要求:
1、有一个明确的结束条件,只能递归999次
2、问题规模应该逐渐减小
3、递归效率不高
''' def calc(x):
print(x)
if int(x/2)>0:
return calc(int(x/2))
print('--->',x) calc(10)
recursion function
6 high-order function
def add(a,b,c): return c(a)+c(b) result = add(3,-6,abs) print(result)
python note #3的更多相关文章
- python note
=和C一样,为赋值.==为判断,等于.但是,在python中是不支持行内赋值的,所以,这样避免了在判断的时候少写一个出错. dictionary 的key唯一,值可以为很多类型. list的exten ...
- python note 4
1.使用命令行打开文件 t=open('D:\py\123.txt','r') t.read() 在python和很多程序语言中""转义符号,要想输出\要么多加一个\写成\ 要么在 ...
- python note 17 random、time、sys、os模块
1.random模块(取随机数模块) # 取随机小数 : 数学计算 import random print(random.random())# 取0-1之间的小数 print(random.unifo ...
- python note 16 re模块的使用
1.re模块(#regex) # 查找 # findall : 匹配所有 每一项都是列表中的一个元素 import re ret = re.findall('\d+','dawdawd154wadwa ...
- python note 15 正则表达式
# 正则表达式 只和字符串打交道 # 正则表达式的规则# 规则 字符串 从字符串中找到符合规则的内容 # 字符组 : [] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的 # [0 ...
- python note 12 生成器、推导式
1.生成器函数 # 函数中如果有yield 这个函数就是生成器函数. 生成器函数() 获取的是生成器. 这个时候不执行函数# yield: 相当于return 可以返回数据. 但是yield不会彻底中 ...
- python note 10 函数变量
1.命名空间 #内置命名空间 —— python解释器 # 就是python解释器一启动就可以使用的名字存储在内置命名空间中 # 内置的名字在启动解释器的时候被加载进内存里#全局命名空间 —— 我们写 ...
- python note 01 计算机基础与变量
1.计算机基础. 2.python历史. 宏观上:python2 与 python3 区别: python2 源码不标准,混乱,重复代码太多, python3 统一 标准,去除重复代码. 3.pyth ...
- python note of decorator
def decorate_log(decorate_arg,*args,**kwargs): # 存放装饰器参数 def decorate_wrapper(func,*args,**kwargs): ...
- python note #1
To record my process of studying python and to practice my English meanwhile, I'd like to start writ ...
随机推荐
- 在Windows上面安装多个Memcached
在Windows上面安装多个Memcached sc create "memcached Server3" start= auto binPath= "D:\memcac ...
- Qt 3D教程(二)初步显示3D的内容
Qt3D教程(二)初步显示3D的内容 前一篇很easy,全然就没有牵涉到3D的内容,它仅仅是我们搭建3D应用的基本框架而已,而这一篇.我们将要利用它来初步地显示3D的内容了! 本次目的是将程序中间的内 ...
- Linux之我最常用的20条命令
Linux之我最常用的20条命令 玩过 Linux的人都会知道, Linux中的命令的确是非常多,但是玩过 Linux的人也从来不会因为 Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的 ...
- sas数据导入终极汇总-之中的一个
将数据文件读入SAS --DATA Step / PROC IMPORT 1.将SAS文件读入SAS-- data sasuser.saslin; set "F:\sa ...
- A. Ilya and Diplomas( Codeforces Round #311 (Div. 2) )
A. Ilya and Diplomas time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 【BZOJ 1660】 [Usaco2006 Nov]Bad Hair Day 乱发节
1660: [Usaco2006 Nov]Bad Hair Day 乱发节 Time Limit: 2 Sec Memory Limit: 64 MB Submit: 678 Solved: 32 ...
- PHP join() 函数
PHP join() 函数 实例 把数组元素组合为一个字符串: <?php $arr = array('Hello','World!','I','love','Shanghai!'); echo ...
- python-深拷贝-浅拷贝
python-深拷贝-浅拷贝 标签(空格分隔): 未分类 浅拷贝: 拷贝了引用,并没有拷贝内容 深拷贝: 深拷贝是对于一个对象所有层次的拷贝(递归)
- deque 归纳
deque是STL里面的常见容器,它的本质是一个队列,但是与队列不同是的是,它可以两边进出. 下面是STL的一些常见操作. que.assign(beg,end) 将[beg; end)区间中的数据赋 ...
- feign client传递对象
http://bbs.springcloud.cn/d/134-feign-client server端申明 @RestController public class HelloController ...