python函数入门,偏函数,匿名函数,递归函数

1、函数创建语句--def

在python中我们用def语句创建函数语法如下:

def function_nam(参数):                                #def  函数名(参数)

       function_body                                            #函数内容主体,必须缩进,我的习惯是缩到与函数名对齐

  

2、python不在乎函数声明顺序

python不允许调用未声明函数

def foo():

     print("aa")

     bar()

foo()          #报错,因为bar没有定义

python不在乎函数声明顺序

def foo():

     print("foo")

     bar()              #可以调用顺序之后的函数

def bar()    

     print("bar")   

 

3.调用函数

通过函数名()的形式调用,如果不加(),只是对函数的引用,函数()中可以加入参数

>>> def foo():
...     print('foo')
... 
>>> foo()
foo
>>> foo
<function foo at 0x7ff829658e18>

 

4.函数参数

创建函数时可以定义参数,不像java,c,python不需要加类型符。python参数还可以定义默认值

def get_info(name,age):

       print('name is %s ,age is %s' %(name,age))

get_info('libai',18)           #或者get_info(name='libai',age=18)   

   

def get_info(name='libai',age=18):                         #在创建函数时指定参数的默认值

       print('name is %s ,age is %s' %(name,age))

get_info()            #当不指定传参值时,函数采用默认值

 

5.参数组,指针做形参

python允许程序员执行一个没有显示定义参数的函数

相应的方法是把一个字典作为参数传递给函数

>>> a
{'name': 'libai', 'age': 18}

>>> def func(*args):

...     print(args[0]['name'])                #输出字典的一个值
...     print(args[0])                             #输出下标为0的字典
...     print(args)                                #输出整个字典
...     print(args[1])                            #输出错误
... 
>>> func(a)

 libai
{'name': 'libai', 'age': 18}
({'name': 'libai', 'age': 18},)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in func
IndexError: tuple index out of range

如果大家学过c语言,应该知道*args就是一个指针类型,可以指向一个列表,通过下标的形式,我们可以指向多个列表

>>> a={'name':'jjh'}
>>> b={'name':'zzz'}
>>> def func(*avgs):
...     print(avgs[0],avgs[1])
... 
>>> func(a,b)
{'name': 'jjh'} {'name': 'zzz'}

 

6.匿名函数 lambda

python允许用lambda关键字创建匿名函数

匿名不需要以def方式声明,lambda一般用于创建较简单的函数

>>> a= lambda x,y: x+y
>>> a(1,2)
3
 

 7.偏函数

定义:偏函数的概念是将函数式编程的概念和默认参数以及可变参数结合在一起

一个带有多个参数的函数,如果其中某些参数基本上是固定的,那么就可以通过偏函数为这些参数赋默认值

在使用偏函数时需导入模块 : from functionls import partial

>>> def add(x,y):
...  return x+y

>>> from functools import partial
>>> add_10=partial(add,10)
>>> print(add_10(22))
32
 

 

8.递归函数

定义:如果函数包含了对其自身的调用,该函数就是递归的

在操作系统(linux)中,查看某一目录内所有文件,修改权限等都是递归的应用

一个可以执行的递归函数需要有一个结束判断,如下

>>> print(add_10(22))
32
>>> def func(x):
...  if(x<=1):                        #递归函数需要一个结束递归的判断
...   return 1
...  return func(x-1)*x
... 
>>> print(func(10))
3628800
 

9.生成器

定义:从句法上讲,生成器是一个带yield语句的函数

一个函数或者子程序只返回一次,但一个生成器能暂停执行并返回一个中间结果

yield语句返回一个值给调用者并暂停执行

当生成器的next()方法被到用时,它会准确地从暂停的地方继续

当到达一个真正的返回或函数或结束没有更多的值返回时,就会抛出StopIteration异常

>>> def simp_gen():
...   yield '1'
...   yield '2'
... 
>>> mygen=simp_gen()
>>> print(next(mygen))
1
>>> print(next(mygen))
2
>>> print(next(mygen))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值