一、函数
函数的定义和调用:
- 函数是重用的程序段。他们允许你给一段语句命名一个名字,这是函数定义。
- 你可以在你的程序的任何地方使用这个名称运行这个语句块,这是函数调用。
- 内置函数不用定义,直接调用。
- 自定义函数语法格式:
def 函数名(参数表)
函数体 - 函数要先定义,再使用
#如要定义函数:y=x^2+1
>>> def f(x):
value=x**2+1
return value
>>> n=int(input())
2
>>> y=(f(n))
>>> print(y)
5
求斐波那契数列的和:
>>>def fibs(n):
result=[1,1]
for i in range(n-2):
result.append(result[-2]+result[-1])
return result
>>> print(fibs(5))
[1, 1, 2, 3, 5]
匿名函数–lambda表达式:
函数定义的另一种方法是用lambda表达式,它定义了一个匿名函数。lambda的一般形式是关键字lambda后面跟一个或多个参数,紧跟一个冒号,后面是一个表达式。作为表达式,lambda返回一个函数值。lambda用来编写简单的函数,而def用来处理更强大任务的函数。
>>>g=lambda x,y,z:x+y+z
>>> g(1,4,5)
10
函数参数:
- 函数定义时的参数称为形参,这些参数就像变量一样。
- 参数在函数定义的圆括号内指定,用逗号分割。
- 当我们调用函数时,函数中的参数值称为实参
- 函数形参取得的值是你调用函数时提供的实参
位置参数:
- Python处理参数的方式要比其他语句更加灵活。其中,最熟悉的参数类型是位置参数,传入参数的值是按照顺序依次赋值给形参
>>>from math import sqrt
>>> def dis(x1,y1,x2,y2):
print("x1={},y1={},x2={},y2={}".format(x1,x2,y1,y2))
return sqrt((x1-x2)**2+(y1-y2)**2)
>>> print(dis(1,3,4,5))
x1=1,y1=4,x2=3,y2=5
3.605551275463989
关键字参数:
- 为了避免位置参数严格的位置要求,调用参数时可以指定对应形式参数的名字,这是关键字参数,他甚至可以采用与函数定义时不同的顺序
>>>from math import sqrt
>>> def dis(x1,y1,x2,y2):
print("x1={},y1={},x2={},y2={}".format(x1,x2,y1,y2))
return sqrt((x1-x2)**2+(y1-y2)**2)
>>> print(dis(x1=1,y1=3,x2=4,y2=5))
x1=1,y1=4,x2=3,y2=5
3.605551275463989
位置参数和关键字参数混合:
- 如果同时出现两种参数形式,首先应该写出的是位置参数,后是关键字参数
>>>from math import sqrt
>>> def dis(x1,y1,x2,y2):
print("x1={},y1={},x2={},y2={}".format(x1,x2,y1,y2))
return sqrt((x1-x2)**2+(y1-y2)**2)
>>> print(dis(1,3,y2=5,x2=4))
x1=1,y1=4,x2=3,y2=5
3.605551275463989
下面程序出错
>>> from math import sqrt
>>> def dis(x1,y1,x2,y2):
print("x1={},y1={},x2={},y2={}".format(x1,x2,y1,y2))
return sqrt((x1-x2)**2+(y1-y2)**2)
>>> print(dis(1,y1=3,4,5