函数:
def 函数名(参数): 代码块
调用函数:函数名(参数)
>>> def a(n1,n2): return n1+n2 >>> print(a(2,3)) 5
函数定义过程中设置的参数为形参,他只是一个形式,表示占据一个参数位置;
函数调用时传入的参数为实参,他是具体的参数值。
功能与注释相同,用引号括起来,在函数运行时不会运行函数文档;
可用函数名._doc_打印函数文档,也可用help(函数名)打印函数文档。
解决由于参数过多而导致参数位置设置不当的问题,在调用函数时将形参与实参对应。
>>> def Fun(name,id): print(name+'的学号是'+id) >>> Fun(id='666',name='yyl') yyl的学号是666
定义函数时定义了默认值的参数,含有默认值的参数在调用时可不用传递参数而使用默认参数;
若调用时传递了实参则使用调用时传递的参数。
>>> def Fun(name='yyl',id='666'): print(name+'的学号是'+id) >>> Fun() yyl的学号是666 >>> Fun('y') y的学号是666
当不确认函数具体有几个参数时可以在函数定义时使用收集参数,即可变参数;
注意当使用了收集参数后还有参数,则需要在调用函数时使用关键字参数定位参数,或者可将后面参数设置为默认参数。
>>> def test(*params): print('参数长度为:',len(params)) print('第二个参数为:',params[1]) >>> test('yyl','666','hhh','xx') 参数长度为: 4 第二个参数为: 666 >>> def test(*params,word): print('参数长度为:',len(params)) print('第二个参数为:',params[1],'word的值为:',word) >>> test('yyl','666','hhh','yu','aaa') Traceback (most recent call last): File "<pyshell#24>", line 1, in <module> test('yyl','666','hhh','yu','aaa') TypeError: test() missing 1 required keyword-only argument: 'word' >>> test('yyl','666','hhh','yu','aaa',word='richhhhhhhh') 参数长度为: 5 第二个参数为: 666 word的值为: richhhhhhhh
习题:
1、编写一个函数power()模拟内建函数pow(),即power(x, y)为计算并返回x的y次幂的值。
方法一: def power(x,y): m=x while y>1: m=m*x y-=1 return m print(power(3,2)) 9 方法二: def power(x,y): m=x**y return m print(power(3,2)) 9
2、编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
方法一: def gcd(x,y): i=min(x,y) while i>=1: if x%i==0 and y%i==0: return i else: i-=1 print("请输入两个值:") x=int(input()) y=int(input()) print("%d和%d的最大公约数是:"%(x,y),gcd(x,y)) 请输入两个值: 25 15 25和15的最大公约数是: 5 方法二: def gcd(x,y): while y: t = x % y x = y y = t return x print(gcd(18,9))