python学习笔记之函数及其高级特性
2018-01-19 21:56
806 查看
一.定义函数
二.调用函数
三.理解函数名
四.空函数
五.参数检查
六. 函数返回值
七.函数参数
八.默认参数
九.可变参数
十.关键字参数
十一.参数组合
十二.参数总结
十三.变量的作用域
十四.高级特性
• def关键字,依次写出函数名、括号、括号中的参数和冒号 : • 在缩进块中编写函数体,函数的返回值用 return 语句返回。 def 函数名(): 函数体 return 返回值1,返回值2
二.调用函数
Python 内置了很多有用的函数,我们可以直接调用: • abs() • cmp() • 数据类型转换函数: int(), float(), str(),unicode(),bool() 函数名() 实现打印返回值: print 函数名() 总结: 定义函数时,函数不执行; 调用函数时, 函数才执行;
三.理解函数名
•函数名与变量名类似,其实就是指向一个函数对象的引用; •给这个函数起了一个“别名”:函数名赋给一个变量
四.空函数
• 定义一个什么事也不做的空函数,可以用 pass 语句; • pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来 def nofunc(): pass
五.参数检查
• 调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError; • 如果参数类型不对,Python 解释器就无法帮我们检查。 • 数据类型检查可以用内置函数 isinstance 实现函数返回值 函数可以返回多个值吗? 那编写python程序,思考下: 定义一个函数func,传入两个数字,返回两个数字的平均值与最大值。 def fun(*args): """ 返回最大值和最小值 :param args: 传入多个数值 :return: 最大值, 最小值 """ # 实质上 python 只能返回一个值; # 间接通过元组返回多个值 ; return max(args), min(args)
六. 函数返回值
• 函数返回值用return关键字; • 返回一个 tuple 可以省略括号; • Python 的函数返回多值其实就是返回一个 tuple • 函数执行完毕也没有 return 语句时,自动 return None
七.函数参数
•默认参数可以降低调用函数的难度。 定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决? 默认参数注意事项: •有多个参数时,变化大放前面,变化小的放后面; •必选参数在前,默认参数在后
八.默认参数
默认函数容易出错点: 试一试:先定义一个函数,传入一个 list,添加一个END 再返回.
九.可变参数
- 可变参数就是传入的参数个数是可变的,可以是 1 个、2 个 到任意个,还可以是 0 个。*args 以数学题为例子,给定一组数字 a,b,c......, 请计算 a 2 + b 2 + c2+ ...... 如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办? - Python 允许你在 list 或 tuple 前面加一个 * 号; - 把 list 或 tuple 的元素变成可变参数传进去; largs = [1,2,3] func(largs[0],largs[1],largs[2]) func(*largs)
十.关键字参数
•关键字参数允许你传入 0 个或任意个含参数名的参数; •这些关键字参数在函数内部自动组装为一个 dict; •关键字参数用**kwargs kwargs 可以改为其他变量名; def inuser(name, age, **kwargs): # kwargs 实质上是一个字典 ; print name, name, kwargs inuser("user1" 12 city="xi'an" birth="20180101")
十一.参数组合
•参数组合是指可以必选参数、 默认参数、 可变参数和关键 字参数一起使用。 •参数定义的顺序必须是:必选参数、 默认参数、可变参数和 关键字参数。
十二.参数总结
• 必选参数 •默认参数:默认参数一定要用不可变对象 •可变参数:*args 是可变参数,args 接收的是一个 tuple •关键字参数:**kw 是关键字参数,kw 接收的是一个dict •对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它
十三.变量的作用域
• 局部变量:只能在函数内部使用的变量 • 全局变量:在整个程序中使用的变量 • global关键字:强制将局部变量转换为全局变量 # 全局变量 num = 1 def fun(): # global 声明 num 为全局变量 global num # 局部变量 num = 5 fun() print num 5
十四.高级特性
1.迭代 是否可以for循环遍历的对象; isinstance判断是否可迭代;2.列表生成式 生成列表的公式 需求: 生成一个列表, 返回1-100中偶数的平方; 变异的列表生成式: 练习:找出/etc下文件中以.conf结尾的文件; 提示: - os.listdir("/etc") - s.enswith(".conf") 3.生成器 *为什么需要生成器? •通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的; •创建一个包含 100 万个元素的列表,占用很大的存储空间 生成器是什么? •在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。 在 Python 中,这种一边循环一边计算的机制,称为生成器(Generator) 怎么创建生成器? •把一个列表生成式的 [] 改成 () •使用g.next()方法依次读取元素(麻烦) 使用 for 循环(推荐) python编程:著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:1, 1, 2, 3, 5, 8, 13, 21,...
相关文章推荐
- python学习(3)——字典,函数及其高级特性
- Python学习笔记3---PYTHON函数与高级特性
- python 学习笔记day07-python函数高级应用
- 【Python学习笔记】python高级特性:生成器
- Python学习笔记(三)--高级特性
- 【Python学习笔记】python高级特性:迭代器
- 【Python学习笔记】python高级特性:切片
- Python学习1——基础、函数、高级特性
- Python高级特性(切片 迭代 列表生成式 生成器 迭代器)学习笔记
- python学习笔记3:面向对象的高级特性3 定制类
- 廖雪峰Python的研读笔记(一) Python基础、函数、高级特性
- python学习笔记(6)-高级特性(二)-迭代
- Python学习笔记--高级特性
- python学习笔记1:面向对象的高级特性1__slots__
- python学习笔记(5)-高级特性(一)-切片
- 【Python学习笔记】python高级特性:列表生成式
- python2.7学习笔记(6) ——高级特性:切片、迭代、列表生成式、生成器
- Python学习笔记(十)—— 高级特性
- 廖雪峰python学习笔记4:高级特性