赞
踩
第10天,我们主要学习python自定义函数如何定义,调用,返回值,以及*号的特殊作用?另外练习编写了判断输出素数和斐波那契数列的函数
一,函数
函数包括内置函数和自定义函数
1,内置函数
本地可以直接使用的函数,如abs(),help(),dir()等
2,自定义函数
自定义函数语法:def 函数名称(参数x,y):
'''函数帮助文档'''
r=x+y 语句
return r(返回值)
例如
>>> def add(x,y):
... 'this is a function'
... r=x+y
... return r
...
函数定义也可以没有参数
>>> def my_book():
... return 'hello'
...
查看内置函数的帮助文档的方法,也可查看自定义函数的文档
>>> help(add)
Help on function add in module __main__:
add(x, y)
this is a function
>>> add.__doc__
'this is a function'
练习:查找一定范围内的素数import math
def is_prime1(n):
if n<=1:
return False
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
return False
return True
lst=range(2,20)
prime_lst=[i for i in lst if is_prime1(i)]
print(prime_lst)
[2, 3, 5, 7, 11, 13, 17, 19]
调用:需要函数名称+小括号(内含参数)传参数的方式可以按位置,按名称,设默认值按位置
>>> add(3,4)
7
按名称
>>> add(y=4,x=3)
7
设默认值
>>> def adds(x,y=4):
... r=x+y
... return r
...
>>> adds(2)
6
注意python中参数是‘传递对象的引用’
函数不对引用对象检验可以使用pass定义一个函数
函数名称代表函数对象
return返回值return的作用是会中断当前函数,并返回到函数调用位置,如果return后面有返回值就会把返回值返回到函数调用位置
函数也可以没有return,没有时python解析器会在函数结束时自动返回None值
return 可以返回一个对象,也可以返回多个对象
如下
>>> def foo():
... return 1,2,3
...
>>> a=foo()
>>> a
(1, 2, 3)
>>> x,y,z=foo()
>>> x
1
>>> y
2
>>> z
3
练习:编写斐波那契数列函数def fibs(n):
result=[0,1]
for i in range(n-2):
result.append(result[-2]+result[-1])
return result
lst=fibs(10)
print(lst)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
二,星号*的作用:
1,变量*arg的作用:x,*y表示按位置,除x对应第一个外,其他都给y
>>> def foo(x,*y):
... print('x=',x)
... print('y=',y)
...
>>> foo(1,2,3,4)
x= 1
y= (2, 3, 4)
2,**kwargs中*的作用:需按名称赋值
>>> def foo(**y):
... print('y=',y)
...
>>> foo(2,3,4)
Traceback (most recent call last):
File "", line 1, in
TypeError: foo() takes 0 positional arguments but 3 were given
>>> foo(a=1,b=2,c=3)
y= {'a': 1, 'b': 2, 'c': 3}
3,在赋值语句,传参数时中*的功能也适用
>>> x,*y=1,2,3,4
>>> x
1
>>> y
[2, 3, 4]
>>> def bar(x,y,z):
... print('x=',x)
... print('y=',y)
... print('z=',z)
...
>>> t=(8,9)
>>> bar(2,*t)
x= 2
y= 8
z= 9
>>> d={'x':1,'y':2,'z':3}
>>> bar(**d)
x= 1
y= 2
z= 3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。