Python中定义函数的使用方法?4.6. 定义函数
我们可以创建一个用来生成指定边界的斐波那契数列的函数:
def fib(n):# write Fibonacci series up to n
..."""Print a Fibonacci series up to n."""
...a, b = 0, 1
...while an:
...print(a, end=' ')
...a, b = b, a+b
...print()
【python中函数重命名 python 函数重写】...
# Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
关键字 def 引入了一个函数 定义 。在其后必须跟有函数名和包括形式参数的圆括号 。函数体语句从下一行开始,必须是缩进的 。
函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring 。(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览;在你的代码中包含 docstrings 是一个好的实践,让它成为习惯吧 。
函数 调用 会为函数局部变量生成一个新的符号表 。确切的说,所有函数中的变量赋值都是将值存储在局部符号表 。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表 。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用 。
函数引用的实际参数在函数调用时引入局部符号表 , 因此 , 实参总是 传值调用 (这里的 值 总是一个对象 引用 ,而不是该对象的值) 。[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建 。
一个函数定义会在当前符号表内引入函数名 。函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型 。这个值可以赋予其他的名字(即变量名),然后它也可以被当作函数使用 。这可以作为通用的重命名机制:
fib
f = fib
f(100)
0 1 1 2 3 5 8 13 21 34 55 89
如果你使用过其他语言,你可能会反对说:fib 不是一个函数,而是一个方法 , 因为它并不返回任何值 。事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None ) 。这个值被称为 None (这是一个内建名称) 。如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容) 。如果你确实想看到这个值的输出内容,请使用 print() 函数:
在python2.6下 , 写个重命名文件的函数,要支持中文的,import os
import re
for file in os.listdir(filepath):
if os.isfile(os.path.join(filepath,file)):
newfile = re.sub(name1,name2,file)
os.rename(os.path.join(filepath,file),os.path.join(filepath,newfile))
应该能跑吧 。。没试过
在Python中使用Asyncio系统(3-4)Task 和 FutureTask 和 Future
前面我们讨论了协程,以及如何在循环中运行它们才有用 。现在我想简单谈谈Task和Future api 。你将使用最多的是Task , 因为你的大部分工作将涉及使用create_task()函数运行协程,就像在第22页的“快速开始”中设置的那样 。Future类实际上是Task的超类,它提供了与循环交互操作的所有功能 。
可以这样简单地理解:Future表示某个活动的未来完成状态,并由循环管理 。Task是完全相同的,但是具体的“activity”是一个协程——可能是你用async def函数加上create_task()创建的协程 。
Future类表示与循环交互的某个东西的状态 。这个描述太模糊了,不太有用,所以你可以将Future实例视为一个切换器 , 一个完成状态的切换器 。当创建Future实例时,切换设置为“尚未完成”状态,但稍后它将是“完成”状态 。事实上,Future实例有一个名为done()的方法,它允许你检查状态 , 如示例 3-15所示 。
推荐阅读
- 如何对服装店铺引流,如何对服装店铺引流客户进行
- flutter启动页面动画,flutter弹出框
- jquery获得父级元素高度,jquery获取iframe父元素
- 手机按键精灵教程ios,手机按键精灵ios版
- vb.net倍数 vbnet implements
- 视频申请什么版权,视频申请什么版权好一点
- 名爵5安卓桌面组件下载,名爵5安卓桌面组件下载不了软件
- 电商如何选品精髓,电商选品的原则及方法
- go语言err是什么 go语言reflect