python函数

Python装饰器学习(九步入门)

廉价感情. 提交于 2020-03-23 17:23:27
Python装饰器学习(九步入门) 这是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式。 第一步:最简单的函数,准备附加额外功能 1 2 3 4 5 6 7 8 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次''' def myfunc(): print ( "myfunc() called." ) myfunc() myfunc() 第二步:使用装饰函数在函数执行前和执行后分别附加额外功能 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # -*- coding:gbk -*- '''示例2: 替换函数(装饰) 装饰函数的参数是被装饰的函数对象,返回原函数对象 装饰的实质语句: myfunc = deco(myfunc)''' def deco(func): print ( "before myfunc() called." ) func() print ( " after myfunc() called." ) return func def myfunc(): print ( " myfunc() called." ) myfunc = deco(myfunc) myfunc() myfunc() 第三步:使用语法糖@来装饰函数 1 2 3 4 5 6 7 8 9 10 11

python第十七天作业

≯℡__Kan透↙ 提交于 2020-03-23 16:52:32
一:编写函数,(函数执行的时间用time.sleep(n)模拟) import time def num_func(x,y): if x > y: res = x-y else: res= y-x time.sleep(2) print(res) return res 二:编写装饰器,为函数加上统计时间的功能 def timmer(func): def wrapper(*args,**kwargs): start = time.time() res=func(*args,**kwargs) end = time.time() print(end-start) return res return wrapper num_func = timmer(num_func) num_func(2,5) print(num_func) 三:编写装饰器,为函数加上认证的功能 def auth(func): def wrapper(*args,**kwargs): user_name = input('账号:>>').strip() user_pwd = input('密码:>>').strip() with open(r'db.txt','rb') as f: while True: msg = f.readline().decode('utf-8') if not len(msg):

python二叉树学习分享

别等时光非礼了梦想. 提交于 2020-03-23 14:33:25
介绍:树形结构是应用相当广泛的一种非线性结构,建立与应用大多使用链表来处理,当然也可用连续的列表来实现 常见概念:   满二叉树:如果树高位H,树的结点总数为2*H-1,H>=0,称为满二叉树   完全二叉树:高度为H,节点数小于2*H-1,但节点的编号方式与满二叉树一致   斜二叉树:当一个二叉树完全没有左节点或者右节点的时候,称为左斜二叉树或者右斜二叉树   严格二叉树:每一个非终端的节点均有非空的左右子树 1.用数组实现二叉树   规则:左子树的节点索引值是父节点索引值乘2      右子树的节点索引值是父节点索引值乘2加1      每一个树根的值大于左子树值小于友子树值     创建函数:        def Betree(betree,data,length): for i in range(1,length): level = 1 while betree[level] != 0: if betree[level] > data[i]: level = level*2 else: level = level*2+1 betree[level] = data[i] return betree 2.链表实现二叉树   有点:节点的增加和删除容易实现,缺点:很难找到父节点 class tree: def __init__(self): self.data=0 self

Python学习实践 | speech智能语音模块正确方法

寵の児 提交于 2020-03-23 14:30:46
最近的生活、学习节奏很是容易被打断,终于,在今天,既实习结束之后,夏令营也结束了。 前几天,一个人在复习地很累的时候,又重新将Python捡了起来,看了挺多的知识点。 真是太有意(wu)思(liao)了!说到这里。顺便给大家推荐一个资源很全的python学习免非解答.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,这里有资深程序员分享以前学习心得,学习笔记,还有一线企业的工作经验,且给大家精心整理一份python零基础到项目实战的资料,每天给大家讲解python最新的技术,前景,学习需要留言的小细节 环境准备 1️⃣ python2.* 或 python3.* 2️⃣ 安装pywin32扩展库 3️⃣ 安装speech模块 安装Python 2/3 安装Python2还是Python3的选择上,我个人是推荐两个都装上,在某些地方用的时候稍微多个切换环境变量的步骤而已。 当然了,我觉得就目前Python3已经推出的时长来看,初学者的话,还是建议先选择安装Python2熟悉Python的一些语法结构定义,而且使用上应该较舒适一些吧。 毕竟Python2推出的时间更久一些,遇到一些问题,可供搜索的解决方案也丰富些;同时啊,目前仍让存有部分模块功能无法适应Python3或是Python3.*的较高版本。 具体安装的的过程就不详讲了,不管哪个版本都几乎大同小异

Effective python(二):函数

心不动则不痛 提交于 2020-03-23 13:31:51
1,遇到特殊情况抛出异常而不是返回None 2,有些情况需要将重要的消息优先显示在其它内容前面,例如在用户界面绘制的时候,实现方法如下 def sort_priority(values,group): def helper(x): if x in group: # 如果在优先组内,那就排到最前面 return (0,x) # python会以特殊的形式比较两个元组,解释看下面 return (1,x) values.sort(key=helper) Python比较元组(或列表):可以想象比较的过程[(0,7),(0,8),(1,3)],那么Python进行比较的时候,会先进行元组的一个元素排序,然后再根据排序结果,对元组中第二个元素基于第一个元素的位置进行排序,当然最后输出的结果还是正常的列表[7,8,3],这只是其中比较的过程 3,nonlocal声明获取闭包内的数据,但它不能延伸至模块级别,而且复杂的函数情况下应该尽量少用,如果越写越复杂,可以将相关状态封装成辅助类 class Sorter(object): def __init__(self,group): self.group=group self.found=False def __call__(self,x): #修改这个后能够使得将类的实例当函数一样调用 if x in self.group: self.found

修改python默认的编码方式

十年热恋 提交于 2020-03-23 13:05:17
今天碰到了 python 编码问题, 报错信息如下 Traceback (most recent call last): File "ntpath.pyc", line 108, in join UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 36: ordinal not in range(128) 显然是当前的编码为ascii, 无法解析0xa1(十进制为161, 超过上限128). 进入python console后, 发现默认编码确实是 ascii, 验证过程为: >>>import sys >>>sys.getdefaultencoding() #输出为ascii. #在使用 sys.setdefaultencoding('utf8'), 报错! >>>sys.setdefaultencoding('utf8') AttributeError: 'module' object has no attribute 'setdefaultencoding' google 到一个 limodou 回复的帖子, http://www.linuxforum.net/forum/showflat.php?Cat=&Board=python&Number=580942&page=15&view

第一章 Python基本语法

百般思念 提交于 2020-03-23 13:03:17
寒假不能荒废,终于静下心来认真地开始学习Python,在这里与大家分享一下所学知识,希望能对像我这样的小白有所帮助,如有错误之处,谢大佬不吝赐教!! 编程语言包括机器语言、汇编语言、高级语言、超级语言四种,其中,超级语言是具有强大的计算生态并能够集成开发的语言。Python是世界上目前唯一的超级语言。 作为Python的入门学者,与大家分享所学的知识,以下简要介绍了python的十一个基本语法元素: 1.缩进: 缩进表达程序的格式框架,缩进长度一般为4个空格或者一个tab,在一个程序中,缩进的长度是相同的,Python对缩进有很严格的要求,如果缩进错误,将会导致程序运行错误。 2.注释: 注视包括单行注释和多行注释 ,但行注释以井号开头,多行注释是在第一行的开头和最后一行的结尾用三引号标注。 #这里是单行注释 “’这里是多行注释第一行 这里是多行注释第二行“’ 3.命名: 大小写字母、数字、下划线以及汉字等字符及组合,Python对大小写敏感,首字符不能为数字,命名不能与保留字相同。 4.保留字: Python有33个保留字,保留字也称关键字,被编程语言内部定义并保留使用的标识符,例如:if,elif,else,in……保留字对大小写敏感。 注意:黑色保留字是Python基础语法体系 用到的保留字,只有True,False,None三个保留字是首字母大写的。 保留字如下表: 5

Python——项目-小游戏2-动画绘制

三世轮回 提交于 2020-03-23 12:52:09
实现游戏循环还有事件的监听 在上一讲中 你需要完成这样的这样的效果, 如果你还没有完成,请不要继续往下阅读!!切记切记切记。,重要的事情说三遍 我们来看一下什么是游戏循环 所谓的游戏循环很好的理解 就是 ,什么时候游戏会退出,注意啊,我们是反向的理解 游戏不退出,那么游戏就没有结束,没有结束,就说明游戏正在运行中,是运行的状态 它保证游戏持续的运行 不会直接的退出 对图像的绘制有很大的帮助 不断的检查用户交互的事件... 把我们的游戏循环写出来 ++++ # 游戏循环 while True: print(i) i += 1 ++++ 我们看一下目前的游戏模块 我们一步一步的来,现在我们去设置游戏的时钟 所谓的游戏时钟 实际上指的就是刷新率 在python中定义了一个专门的类 ' pygame.time.Clock 可以非常方便的设置屏幕绘制速度 —— 刷新帧率 ' 如何使用它?你只需要两步 在 游戏初始化 创建一个 时钟对象 在 游戏循环 中让时钟对象调用 tick(帧率) 方法 说明: tick 方法会根据 上次被调用的时间 ,自动设置 游戏循环 中的延时 你可以这样的来搞它 # 1. 创建游戏时钟对象-你不需要导入包,这个是python自带的,就像js里面的定时器 clock = pygame.time.Clock() i = 0 # 游戏循环 while True: #

新手学习python(六)函数、列表生成式

独自空忆成欢 提交于 2020-03-23 12:17:25
1)定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 2)使用函数的好处:1、简化代码;2、提高代码的复用性;3、代码可扩展 3)举个例子: def sayhello(): #使用关键字def定义函数,后面是函数名 print('hello world') #函数体 sayhello() #调用函数 4)参数传递 def calc(a,b): #a,b为形参,形式参数 res=a*b print('%s * %s=%s'%(a,b,res)) calc(7,8) #实参,实际参数 注意:形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。 5)四种形参类型 1.位置参数:字面意思也就是按照参数的位置来进行传参,比如 说上面的calc函数,a和b就是位置参数,位置参数是必 传的,有几个位置参数在调用的时候就要传几个,否则就会报错了。 2.默认参数,默认参数就是在定义形参的时候,给函数默认赋一个值。例如: def op_file(file_name,content=None): #content为默认值参数,非必填 f = open(file_name,'a+',encoding='utf-8') f.seek(0) if content: #不为空代表写 f.write

Python自学笔记(13day)

人走茶凉 提交于 2020-03-23 12:05:39
(1)函数的嵌套   (1)首先明白三点:调用函数意思就是:调用函数所得到的结果是什么。 函数没有被调用,则函数里面代码永远不会被执行。 调用函数只有拿到返回值才有结果 def func(): def su(): print("shuai") func() #输出:啥都没有因为su()没有被调用 def func(): def su(): print("shuai") su() func() #输出:shaui none 因位执行到su()打印出shuai就结束了,函数func()没有拿到返回值。 def func(): def su(): print("shuai") return shuai su() func() #输出:shuai shuai 因位执行到su()打印出shuai就结束了,函数func()也拿到返回值。 (2)函数的多层嵌套 def inner (): a=1 def inner1(): b=2 print(a) print("inner") def inner2(): print(a) inner2() inner() 总结:(1)全局变量不能用局部变量,局部变量看可以用全局变量,但是不可对全局变量中的不可变数据类型进行修改(即对其加减乘除),如果想要修改用gloabl(),它声明的是去全局变量。     (2)同理,内部函数可以用外函数中的变量