python函数声明语句_python自定义函数

python函数声明语句_python自定义函数_第1张图片

第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

你可能感兴趣的:(python函数声明语句)