龙空技术网

Python小知识,这些技能你不会?(二)

程序那点事 812

前言:

现时看官们对“python中open函数的参数中哪些可以用于写入”大致比较注重,朋友们都想要分析一些“python中open函数的参数中哪些可以用于写入”的相关知识。那么小编同时在网摘上收集了一些关于“python中open函数的参数中哪些可以用于写入””的相关内容,希望同学们能喜欢,各位老铁们一起来学习一下吧!

Python小知识

最近在看《零压力学Python》,巩固一下基础知识,意外收获到很多常用却不一定被注意的小知识,分享给大家,学到东西了点赞支持哦~

第一篇:点击这里查看第一篇Python小技能

一、推导式

列表推导式是Python基础,好用,而又非常重要的功能,也是最受欢迎的Python特性之一。本质上可以把列表推导式理解成一种集合了变换和筛选功能的函数,通过这个函数把一个列表转换成另一个列表的过程。

(1) 普通推导式

# 简单列表推导式list_test = [i for i in range(5)]print(list_test)# 生成偶数(1-10之间)list_test = [i for i in range(1,11) if i%2==0]print(list_test)# 生成奇数(1-10之间)list_test = [i for i in range(1,11) if i%2!=0]print(list_test)# 生成平方数(1-10之间)list_test = [pow(i,2) for i in range(1,11)]print(list_test)'''result:	[0, 1, 2, 3, 4]	[2, 4, 6, 8, 10]	[1, 3, 5, 7, 9]	[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]'''

(2)二维推导式

# 2-19所有的合数list_test0 = {j for i in range(2,20) for j in range(i*i,20,i)}print(list_test0)# 2-19所有的质数list_test1 = [i for i in range(2,20) if i not in list_test0]print(list_test1)'''result:	{4, 6, 8, 9, 10, 12, 14, 15, 16, 18}	[2, 3, 5, 7, 11, 13, 17, 19]'''

Python中还有字典推导式、元组推导式、集合推导式等,与列表推导式使用方式大致相同。

列表推导式的使用非常广泛,从实际使用经验来看,列表推导式使用的频率是非常高的,也是相当好用的。不过对于多层for循环,复杂筛选条件的,使用列表推导式不一定好,因为这样虽然节省了代码量,但同时让人读起来和理解起来更加困难,这个时候建议直接用多个普通for循环方式实现就可以了。

二、enumerate 和 format 函数

(1)enumerate 函数

基本介绍:enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 enumerate(sequence, start=0)

sequence -- 一个序列、迭代器或其他支持迭代对象。start -- 下标起始位置,默认为0。
基本使用
list_test = ['hello','world','!']for i in enumerate(list_test):	# print(type(i))   result : <class 'tuple'>	print(i)result : 	(0, 'hello')	(1, 'world')	(2, '!')'''

从上面可以看出,枚举后的,迭代出的单个对象为元组(tuple)。

索引与值分开

for index,values in enumerate(list_test):	# 注意:我这里 index是int类型的,所以用了str()转换成str类型	print(str(index)+':'+values)result :	0:hello	1:world	2:!

(2)format函数

基本介绍:一种格式化字符串的函数 ,它增强了字符串格式化的功能。 基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

基本操作

# 不设置指定位置,按默认顺序str_test0 = '你好{}{}!'.format(',','极简XksA')print(str_test0)'''result:	你好,极简XksA!'''# 设置指定位置,按默认顺序str_test1 = 'Hell0{1}{0}!'.format('XksA',',')print(str_test1)'''result:	Hell0,XksA!'''# 解析字典参数dict_test = {'name':'XksA','age':21}str_test2 = '我是{name},今年{age}岁!'.format(**dict_test)print(str_test2)'''result:	我是XksA,今年21岁!'''# 选择列表/元组参数list_test = ['you','XksA']  # ('you','XksA')str_test3 = 'Do {0[0]} like {0[1]}?'.format(list_test)print(str_test3)'''result:	Do you like XksA?'''
format的骚操作
table_head = ['id','name','age']content = [[1,'XksA',21],[2,'Python',17],[3,'Java',13]]head = '{0[0]:^8}{0[1]:^8}{0[2]:^8}'.format(table_head)print(head)for i in content:	content_test = '{0[0]:^8}{0[1]:^8}{0[2]:^8}'.format(i)	print(content_test)'''result :   id     name    age      1      XksA     21      2     Python    17      3      Java     13 '''
语法解析

格式设置

基本含义

{:>n}

将字段宽度设置为n,字段打印出来时向左对齐

{:<n}

将字段宽度设置为n,字段打印出来时向右对齐

{:^n}

将字段宽度设置为n,字段打印出来时居中显示

三、文件操作

(1)open函数

python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。 open(name, mode, buffering)

nam为必填参数,其他选填

name : 一个包含了你要访问的文件名称的字符串值。mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。复制代码

(2)读写文件

a.原文件内容:

b.文件目录:I:\123.txt

c.读文件

with open(r'I:\123.txt') as file:	# 读文件	content = file.read()	print(content)'''result :	hello world!我来自中国!'''

注意:这里也可以直接open生成IO流对象,不用with,但这个时候使用完,一定要记得close掉IO流,避免资源浪费。

d.写文件

with open(r'I:\123.txt',mode='r+') as file:	# 写文件	file.write('欢迎关注极简XksA,Python学习乐园~')	# 写完后再读	content = file.read()	print(content)'''result :	欢迎关注极简XksA,Python学习乐园~'''

注意:在写文件时,必须标注写格式"a+","r+","wb+"等,不然无法写入,如果不修改mode,默认为"r",只读,强制写入会报错io.UnsupportedOperation: not writable。

(3)基本读写格式表

四、局部变量与全局变量

(1)局部变量与全局变量

局部变量只对该变量所在函数有效,不会影响或修改函数外面的同名变量,所以可以看作,局部变量优先于全局变量被使用。 示例:

g_test = 10def sum():	a0 = 9	g_test = 10-a0	print("局部变量g_test值为:"+str(g_test))sum()print("全局变量g_test值为:"+str(g_test))'''result:	局部变量g_test值为:1	全局变量g_test值为:10'''

可以明显看出,此时函数域与全局域中g_test不相同,虽然我们在函数sum里修改了g_test的值,但对全局变量g_test并没有影响。

(2)global关键字

global关键字,被global标记的变量表示为全局变量,另外global不会创建指定的变量,因此我们还是需要在某个地方创建该变量,可在全局域中给变量赋值定义,也可以在函数域中赋值定义。 示例:

g_test = 10  # 全局变量def sum():	global g_test  # 注明后面出现的g_test为全局变量	g_test = 4 # 全局变量	print("函数域中g_test值为:"+str(g_test))	sum()print("全局域中g_test值为:"+str(g_test))'''result:	函数域中g_test值为:4	全局域中g_test值为:4'''

可以明显看出,此时函数域与全局域中g_test相同了,也就是我们能在函数里操作全局变量了。

灵活应用这些基本操作,让你的工作学习事半功倍。

坚持 and 努力 : 终有所获。

作者:老表

链接:

标签: #python中open函数的参数中哪些可以用于写入