python函数

Python当中read(),readline(),和readlines()的区别

左心房为你撑大大i 提交于 2020-03-30 13:34:43
当python进行文件的读取是,会遇到三个不同的函数,它们分别是read(),readline(),和readlines()。 第一个函数read() 一.read() 这个函数将会从头到尾读取文件当中所有的内容,最后返回的结果为字符串 二.readline() 这个函数仅会读取一行的内容,比较适合和文件读取当中的普通文件读取方法配合起来使用: f=open("123.txt","r") while True: file=f.readline() if file =="" break    print(file) f.close() 三.readlines() 这个函数和read函数有一点相似,也是读取文件当中所有的内容,但是最后返回的是列表而不是字符串。 来源: https://www.cnblogs.com/geeksongs/p/12598007.html

(译文)Python中的staticmethod与classmethod

南笙酒味 提交于 2020-03-30 13:30:51
原文是 stackoverflow 的一则高票回答, 原文链接 可能之前也有人翻译过,但是刚好自己也有疑惑,所以搬运一下,个人水平有限所以可能翻译存在误差,欢迎指正(如侵删)。 尽管 classmethod 和 staticmethod 非常的相似,但是两者在具体的使用上还是有着细微的差别: classmethod 必须使用类对象作为第一个参数,而 staticmethod 则可以不传递任何参数。 让我们通过实际的例子来看看。 样板 让我们假设有处理日期信息的类: class Date(object): day = 0 month = 0 year = 0 def __init__(self, day=0, month=0, year=0): self.day = day self.month = month self.year = year 这个类很显然可以被用来存储某些日期信息(不考虑时区信息;让我们假设所有的日期都用 UTC 表示) 这里定义了 __init__ ,典型的类实例初始化方法,它作为典型的 instancemethod 接受参数,其中第一个传递的必要参数是新建的实例本身。 类方法 有一些可以通过使用 classmethod 很好解决的任务。 假设我们有很多 ('dd-mm-yyyy') 格式字符串的日期信息,想要把它们创建成 Date 类实例

【Python】operator 模块简单介绍

允我心安 提交于 2020-03-30 12:13:47
简单介绍几个常用的函数,其他的请参考 文档 。 operator.concat(a, b) operator. concat (a, b) 对于 a、b序列,返回 a + b (列表合并) operator.countOf(a, b) 返回 b 在 a 中出现的次数 perator.delitem(a, b) operator. delitem (a, b) 删除 a 中索引为 b 的值 operator.getitem(a, b) operator. getitem (a, b) 返回 a 中索引为 b 的值 operator.indexOf(a, b) 返回 b 在 a 中首次出现位置的索引值。 operator.setitem(a, b, c) operator. setitem (a, b, c) 设置 a 中索引值为 b 的项目值更改为 c operator 模块也为属性和项目的查找提供了一些工具。这些工具使得 map(), sorted(), itertools.groupby() 或其他函数 需要的参数的提取更方便更快速。上面的函数有一个共同点,即均接受函数参数。 operator.attrgetter(attr) operator.attrgetter(*attrs) 返回一个可调用的对象,该对象从运算中获取 'attr' 。如果请求的属性不止一个的话,

python的filter()函数

馋奶兔 提交于 2020-03-30 12:10:47
filter() 函数是 Python 内置的另一个有用的高阶函数。 filter()函数接收一个 函数 f 和一个 list ,这个函数 f 的作用是对每个元素进行判断,返回 True或 False, filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数: def is_odd(x): return x % 2 == 1 然后,利用filter()过滤掉偶数: filter(is_odd, [1, 4, 6, 7, 9, 12, 17]) 结果: [1, 7, 9, 17] 利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串: def is_not_empty(s): return s and len(s.strip()) > 0 filter(is_not_empty, ['test', None, '', 'str', ' ', 'END']) 结果: ['test', 'str', 'END'] 注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下: a = '

python 迭代器与生成器

怎甘沉沦 提交于 2020-03-30 08:11:10
迭代器 迭代式访问元素的一种方式,迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法: iter() 和 next() 。 常见的字符串,列表或元组对象都可用于创建迭代器: >>> list=[1,2,3,4,5] >>> it=iter(list) >>> print(next(it)) 1 >>> print(next(it)) 2 迭代器对象可以使用常规for语句进行遍历: list=[1,2,3,4,5] it = iter(list) # 创建迭代器对象 for x in it: print (x, end=" ") 输出如下: 1 2 3 4 5 也可以使用 next() 函数: import sys # 引入 sys 模块 list = [1, 2, 3, 4] it = iter(list) # 创建迭代器对象 while True: try: print(next(it)) except StopIteration: sys.exit() 输出如下: 1 2 3 4 创建一个迭代器 把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。 如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python

python面试1-30题

泪湿孤枕 提交于 2020-03-30 06:25:17
1、一行代码实现1--100之和 利用sum()函数求和 2、如何在一个函数内部修改全局变量 利用global 修改全局变量 3、列出5个python标准库 os:提供了不少与操作系统相关联的函数 sys: 通常用于命令行参数 re: 正则匹配 math: 数学运算 datetime:处理日期时间 4、字典如何删除键和合并两个字典 del和update方法 5、谈下python的GIL GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。 多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大 6、python实现列表去重的方法 先通过集合去重,在转列表 7、fun(*args,**kwargs)中的*args,**kwargs什么意思? 8、python2和python3的range(100)的区别 python2返回列表,python3返回迭代器,节约内存 9、一句话解释什么样的语言能够用装饰器?

(8)Django框架学习-python模拟Django框架

廉价感情. 提交于 2020-03-30 04:28:44
原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器才行。比如apache,但是在开发阶段最好有一个简单方便的开发服务器, 容易重启进行调试,等开发调试完毕后,再将代码部署到成熟稳定高效的web服务器。 # -*- coding: utf-8 -*- from wsgiref import simple_server # 定义一个输出 hello world 和环境变量的简单web应用程序 def hello_app(environ, start_response) : # 输出 http 头,text/plain 表示是纯文本 start_response( '200 OK' , [( 'Content-type' , 'text/plain' )]) # 准备输出的内容 content = [] content.append( 'Hello world' ) for key, value in environ.items() : content.append( '%s : %s' % (key, value)) # 输出,根据 wsgi 协议,返回的需要是一个迭代器,返回一个 list 就可以 return [ '\n' .join

python ==> Django框架

给你一囗甜甜゛ 提交于 2020-03-30 03:24:51
python 之 Django 框架 本节内容 1.web 框架 2.mvc和mtv模式 3.django流程和命令 4.django URL 5.django views 6.django temple 7.django models 8.django admin 1.web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。 Web应用的流程: //浏览器发送一个HTTP请求; //服务器收到请求,生成一个HTML文档; //服务器把HTML文档作为HTTP响应的Body发送给浏览器; //浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。   import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8")) client.send("<h1 style='color:red'>Hello, world</h1>".encode("utf8")) def main()

常用模块(一)

六眼飞鱼酱① 提交于 2020-03-30 02:39:53
collections模块 在内置数据类型(dict,list,set,tuple)的基础上,collections模块还提供了额外 的几个数据类型:Counter,deque,defaultdict,namedtuple和OrderedDict等   1.namedtuple:生成可以使用名字来访问元素内容的tuple   2.deque:双端队列,可以快速的从另外一侧追加和推出对象   3.Counter:计算器,主要用来计数   4.OrderredDict:有序字典   5.defaultdict:带有默认值的字典 namedtuple(具名元组) 因为元组的局限性:不能为元组内部的数据进行命名,所以往往我们并不知道一个元组所要表达的意义,所以在这里引入了 collections.namedtuple 这个工厂函数,来构造一个带字段名的元组。具名元组的实例和普通元组消耗的内存一样多,因为字段名都被存在对应的类里面。这个类跟普通的对象实例比起来也要小一些,因为 Python 不会用 __dict__ 来存放这些实例的属性。下面来看看具名元组的实例: p = (1 , 2) 突兀的出现这么一个tuple大家就很难了解它到底想要表达什么东西,而这个时候namedtuple就派上用场了: from collections import namedtuple point =

python六核心编程——条件和循环

ぃ、小莉子 提交于 2020-03-29 16:41:53
1.if声明 单 if 通过使用布尔运算符的声明 and , or 和 not。 if-elif-else. elif即else if if expression1: expr1_true_suite elif expression2: expr2_true_suite else: none_of_the_above_suite 2.while语句 while expression: suite_to_repeat while语句有一个可选的else从句。即 while expression: suite_to_repeat else: expression; 3.for 语句 for iter_var in iterable: suite_to_repeat for 语句有一个可选的else从句。即 for iter_var in iterable: suite_to_repeat else: expression; 4.range() 内建函数 range(start, end, step =1) 默认step为1 >>> range(2, 19, 3) [2, 5, 8, 11, 14, 17] >>> range(3, 7) [3, 4, 5, 6] range() 有两种简略的语法格式: range(end) range(start, end) 5