python函数

python:入门到实践书籍学习(八)

自闭症网瘾萝莉.ら 提交于 2020-03-27 19:33:59
第10章   文件读取: ''' 函数open() 接受一个参数:要打开的文件的名称。使用绝对路径,可读取系统任何地方的文件。就目前而言,最简单的做法是,要么将数据文件存储在程序文件所在的目录,要么将其存储在程序文件所在目录下的一个文件夹中。 关键字with 在不再需要访问文件后将其关闭。 read()方法读取这个文件的全部内容,并将其作为一个长长的字符串存储在变量contents 中。read() 到达文件末尾时返回一个空字符串,而将这个空字符串显示出来时就是一个空行。 ''' with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents.rstrip()) # 逐行读取 with open('pi_digits.txt') as file_object: for line in file_object: print(line.rstrip()) # 创建一个包含文件各行内容的列表 # readlines() 从文件中读取每一行,并将其存储在一个列表中 with open('pi_digits.txt') as file_object: lines = file_object.readlines()   打开文件 时,可指定读取模式 ('r' )、写入模式 ('w'

史上最全的Python面向对象知识点疏理

♀尐吖头ヾ 提交于 2020-03-27 17:19:03
python 面向对象技术简介 类: 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。 实例变量:定义在方法中的变量,只作用于当前实例的类。 另外要注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。 创建类 a 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 P 访问。 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法 self 代表类的实例,self 在定义类的方法时是必须有的

大厂面试必问:Python是如何管理内存的?

爷,独闯天下 提交于 2020-03-27 16:17:29
3 月,跳不动了?>>> 如果写过C和C++的小伙伴肯定都知道,程序中的内存管理是非常关键的,一不小心可能就会产生内存泄漏。 但是我们在写Python的时候好像从来没有关心过内存的处理,为什么可以这么爽? 在你爽的背后,实际上是Python在默默的帮你管理着,具体怎么实现的,听我慢慢道来。 一、引用计数 在Python中,使用了引用计数这一技术实现内存管理。 一个对象被创建完成后就有一个变量指向他,那么就说明他的引用计数为1,以后如果有其他变量指向他,引用计数也会相应增加,如果将一个变量不再执行这个对象,那么这个对象的引用计数减1。 如果一个对象没有任何变量指向他,也即引用计数为0,那么这个对象会被Python回收。 示例代码如下: class Person(object): def __init__(self,name): self.name = name def __del__(self): print('%s执行了del函数'%self.name) while True: p1 = Person('p1') p2 = Person('p2') del p1 del p2 a = input('test:') 可以看到,两个对象的del函数都得到了执行。 二、循环引用 引用计数这一技术虽然可以在一定程度上解决内存管理的问题。但是还是有不能解决的问题,即循环引用。

Python小技巧:用类写装饰器的正确方法,一般新手都不知道

一曲冷凌霜 提交于 2020-03-27 15:54:53
装饰器是一个返回函数的函数。写一个装饰器,除了最常见的在函数中定义函数以外,Python还允许使用类来定义一个装饰器。 pS注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心,如果你缺新项目练习或者没有python精讲教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,里面很多新教程项目,还可以跟老司机交流讨教! 1、用类写装饰器 下面用常见的写法实现了一个缓存装饰器。 def cache (func): data = {} def wrapper(*args, **kwargs): key = f '{func.__name__}-{str(args)}-{str(kwargs)})' if key in data : result = data.get( key ) print( 'cached' ) else : result = func(*args, **kwargs) data [ key ] = result print( 'calculated' ) return result return wrapper 看看缓存的效果。 @cache def rectangle_area(length, width): return length * width rectangle_area( 2 , 3 ) #

01-MaxCompute上的UDF(Python实现)

拈花ヽ惹草 提交于 2020-03-27 15:33:17
一、前言 MaxCompute中的python是2.7环境的,可以通过sys.version验证,话说Python社区都准备放弃2.7了,阿里云啥时候跟上时代的步伐升级到3.x哦。 我们测试一下: Executing user script with PyODPS 0.8.0 2.7.10 (default, Sep 18 2015, 16:43:46) [GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] 可以看到数据开发中的PyODPS版本号,以及Python的版本为2.7.10,机器的系统是Red Hat,一个Linux环境。 据官方文档称,Python代码以沙箱模式执行,在一个受限的环境中运行,部分模块是不可用的。所有纯Python实现(不依赖扩展模块)的模块都是可用的,以及部分C实现的模块,所以不要想当然把本地的一些代码直接挪上来,可能某些包是没有的哦。 二、UDF实战 2.1 指定参数和返回值类型 Python UDF目前支持的MaxCompute SQL数据类型包括Bigint、String、Double、Boolean和Datetime。SQL语句在执行之前,必须确定所有函数的参数类型和返回值类型。 参数与返回值的指定方式如下: @odps.udf.annotate(signature) 很显然,是一个装饰器的写法。

3。26作业

流过昼夜 提交于 2020-03-27 08:25:19
1、文件内容如下,标题为:姓名,性别,年纪,薪资 ​ egon male 18 3000 ​ alex male 38 30000 ​ wupeiqi female 28 20000 ​ yuanhao female 28 10000 要求: 从文件中取出每一条记录放入列表中, 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式 with open('db.txt','rt',encoding='utf8') as f: user_info = [] for line in f: name,sex,age,salary=line.strip().split() info = [name,sex,int(age),int(salary)] user = {k:v for k,v in zip(['name','sex','age','salary'],info)} user_info.append(user) print(user_info) 2、根据1得到的列表,取出薪资最高的人的信息 max_salary_info = max(user_info,key=lambda k:k['salary']) print(max_salary_info) 3 、根据1得到的列表,取出最年轻的人的信息 youngest

python摇骰子猜大小的小游戏

丶灬走出姿态 提交于 2020-03-27 07:59:06
#小游戏,摇筛子押大小的小游戏玩家初始有1000块钱,可以压大压小作为赌注 import random #定义摇筛子的函数: def roll_dice(number = 3,points = None): print ('<<<<< Roll The Dice >>>>>') if points is None: points = [] while number > 0: point = random.randrange(1,7) points.append(point) number = number - 1 return points #将点数转换为大小的函数: def roll_result(total): isBig = 11 <= total < 18 isSmall = 3 <= total < 10 if isBig: return 'isBig' elif isSmall: return 'isSmall' #开始游戏的函数; def start_game(): you_money = 1000 while you_money > 0: print ('<<<<< GAME START >>>>>') choices = ['isBig','isSmall'] your_choices = input('isBig or isSmall:') if your

python 19

大兔子大兔子 提交于 2020-03-27 05:24:54
目录 二分法 面向过程的编程思想 匿名函数 模块 二分法 算法:是高效解决问题的办法 需求:有一个按照从小到大顺序排列的数字列表 需要从该数字列表中找到我们想要的那个一个数字 如何做更高效??? 方案一:整体遍历效率太低 for num in nums: if num == find_num: print('find it') break 方案二:二分法 list.sort()将列表排序 面向过程的编程思想 核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、后干什么 基于该思想编写程序就好比在设计一条流水线 优点:复杂的问题流程化、进而简单化 缺点:扩展性非常差 面向过程的编程思想应用场景解析: 1、不是所有的软件都需要频繁更迭:比如编写脚本 2、即便是一个软件需要频繁更迭,也不并不代表这个软件所有的组成部分都需要一起更迭 匿名函数 1、def用于定义有名函数 func=函数的内存地址 def func(x,y): return x+y print(func) 2、lamdab用于定义匿名函数没名字的函数 lambda x,y:x+y 3、调用匿名函数,只用一次就放弃了 内存地址+() 方式一: res=(lambda x,y:x+y)(1,2) print(res) 方式二:违背了匿名函数的初衷 func=lambda x,y:x+y res=func(1,2)

python 19 作业

喜欢而已 提交于 2020-03-27 05:24:31
作业: 1、文件内容如下,标题为:姓名,性别,年纪,薪资 egon male 18 3000 alex male 38 30000 wupeiqi female 28 20000 yuanhao female 28 10000 要求: 从文件中取出每一条记录放入列表中, 列表的每个元素都是{'name':'egon','sex':'male','age':18,'salary':3000}的形式 with open ('db.txt',mode='rt',encoding='utf-8') as f1: info_dic={} info_list=[] for line in f1: user_info=line.strip().split(' ') user_info=user_info. iter () user_name=user_info. next () user_sex=user_info. next () user_age=int(user_info. next ()) user_salary=int(user_info. next ()) info_dic={'name':user_name,'sex':user_sex,'age':user_age,'salary':user_salary} info_list.append(info_dic) 2

十分钟学会python迭代器和生成器

点点圈 提交于 2020-03-27 03:27:44
迭代器 在Python中,迭代器是遵循迭代协议的对象。使用iter()从任何序列对象中得到迭代器(如list, tuple, dictionary, set等)。另一种形式的输入迭代器是generator(生成器)。 python中,任意对象,只要定义了next方法,它就是一个迭代器。因此,python中的容器如列表、元组、字典、集合、字符串都可以被称作迭代器。 我们在使用for语句的时候,for 语句会调用容器对象中的 iter()。该函数返回一个定义了 next() 方法的迭代器对象,该方法将逐一访问容器中的元素。当元素用尽时,next() 将引发 StopIteration 异常来通知终止 for 循环。你可以使用 next() 内置函数来调用 next() 方法;这个例子显示了它的运作方式: >>> s = 'abc' >>> it = iter(s) >>> it <iterator object at 0x00A1DB50> >>> next(it) 'a' >>> next(it) 'b' >>> next(it) 'c' >>> next(it) Traceback (most recent call last): File "<stdin>", line 1, in <module> next(it) StopIteration