函数
来源:互联网 发布:exit code 139 linux 编辑:程序博客网 时间:2024/06/01 08:04
函数
1.简单函数的定义:
def关键字,依次写出函数名、括号、括号中的参数和冒号 :
在缩进块中编写函数体,函数的返回值用 return 语句返回
注:
!! 函数在执行过程中一旦遇到return,函数就执行完毕,并将结果返回
!! 函数在执行过程中没有遇到return,函数的返回值为 none
!! 定义一个暂时不做动作的函数时,使用pass语句,作为一个占用符,让程序可以正常运行
示例:
def hello():
print 'NICE'
print hello()
2.空函数:
定义一个什么事也不做的空函数,可以用 pass 语句;
pass 可以用来作为占位符,还没想好怎么写函数的代码,就可以先放一个 pass ,让代码能运行起来
示例:
def func():
pass
3.参数检查:
调用函数时,如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError;
如果参数类型不对,Python解释器就无法帮我们检查。
数据类型检查可以用内置函数isinstance 实现
4.函数返回值:
函数返回值用return关键字;
返回一个 tuple 可以省略括号;
Python 的函数返回多值其实就是返回一个 tuple
函数执行完毕也没有return 语句时,自动 return None
小练习(1):
定义一个函数func,传入两个数字,返回两个数字的平均值与最大值
程序:
def func(x,y): if not isinstance(x,int) or notisinstance(y,int): print 'Error Type' avg=sum(x,y)/2 maxnum=max(x,y) return "平均值:[%d],\t最大值:[%d],"%(avg,maxnum)print func(2,10)
5.函数参数:
默认参数可以降低调用函数的难度
注:
!! 有多个参数时,变化大放前面,变化小的放后面
!! 必选参数在前,默认参数在后
小练习(2):
定义一函数,计算x值的n次方。那如果计算x平方时只需要传入x值时怎么解决?
程序:
def power(x,n=2): return x**nprint power(3,3)
注:
!! 默认参数与必选参数同时存在时,必选参数必须在前
小练习(3):
先定义一个函数,传入一个 list,添加一个END 再返回.
程序:
def wowo(li=None): if li is None: return ['END'] li.append("END") return liprint wowo([1,2,3])print wowo()print wowo()
小练习(4):
程序:
def enrool(name,age=20,myclass="西开运维"): print "name:"+name print "age:%d " %age print"myclass:"+myclassenrool("koko",19)enrool("lala")enrool("yuyu",19,"西开开发")
6.可变参数:
可变参数就是传入的参数个数是可变的,可以是 1 个、2 个到任意个,还可以是 0 个
Python中可以在list 或 tuple 前面加一个 * 号;
把 list 或 tuple 的元素变成可变参数传进去;
示例:
def fun(*args): print type(args) return max(args),min(args) li = 44,7,56,21,0 print fun(*li) (结果)/usr/bin/python2.7 /home/kiosk/PycharmProjects/panduan/zidian.py<type 'tuple'>(56, 0)
7.关键字参数
在填写参数的地方 先填写必须参数或者默认参数 在使用**kwargs参数定义关键字参数
示例:
def enroll(name, age=22, **kwargs): print 'name:' + name print 'age:%d' % age for k, w in kwargs.items(): print '%s : %s' % (k, w)dic = {'myclass':'运维班',"gender":'male'}enroll('fentiao', **dic)
小练习(5):(递归函数)
求 n! (Tip:n!= 1x2x3x4x ... x n = (n-1)!xn = .....)
def fact(n): if n == 0: return 1 else: return n*fact(n-1)Q = input("num:")print fact(Q)
总结:
!! 在写递归函数时要有一个明确的结束条件;
!! 在递归时, 问题规模要越来越小;
!! 递归函数效率不高,函数调用是通过栈的数据结构来完成的;
!! 函数每调用一次,栈就会多一层,最多999层,否则会出现栈满溢出现象
小练习(6):(实现二分法)
例如: n =18 求输出 18 9 4 2 1
def fun(n): if not isinstance(n,int): print 'error type' print n b=int(n/2) if b>0: return fun(n/2)print fun(20)
阅读全文
0 0
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- 函数
- TIM_ARRPreloadConfig
- linux下用户与组管理-组管理与帐户文件介绍
- 二.HighGUI图形用户界面初步(3.MouseEvent)
- 暑假测试 Day 4
- ASP.NET实现文件下载
- 函数
- Spring Boot定时任务之传参
- 【Lua】使用lfs遍历文件目录
- SQLiteDatabaseLockedException: database is locked 解决方法
- CEF完整嵌入DUI窗体(五) --JS调用C++注册的函数
- MySQL------常用语句
- 学习MySql--常用命令
- Android网络(1)--学习笔记
- 再谈机器学习中的归一化方法(Normalization Method)