Python入门(三)——函数,参数,参数默认值,可变参数,关键字参数,组合参数,递归函数

一、函数的定义

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

  • 函数内容以冒号起始,并且缩进。

  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a):
    print('number is:',a)
    return

h=func(1)
print(h)

#输出:
#D:\Py3.6\python.exe D:/Pylearn/函数.py
#number is: 1
#None

二、函数参数

其实上面的例子一句用到了函数参数,这里我再举一个比较与其语言不一样的一个python特点

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,b):
    return a,b

h,y=func(1,2)
print(h,y)

#输出:
#1,2

上面例子说明python可以再函数中一次返回多个值,至少这个这样的return再CC++是行不通的!


三、参数默认值

设置默认值

def func(x):
return x * x

这个函数是在计算x的二次方,那我现在如果想计算三次方

def func(x):
return x * x * x

上面的方法显得有点麻烦,所以可以用默认值

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,n=3):
    return a*a*a**n

h=func(2)
print(h)

y=func(2,4)
print(y)

#输出:
#32
#64

从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
使用默认参数有什么好处?最大的好处是能降低调用函数的难度。


四、可变参数(利用一个或两个)

def func(a,*b,**c):
    print(a,b,c)

上面的两个可变参数,*b它的类型是tuple(元组类型),**c是dict(字典类型),待会输出可以观察出来

元组类型test = (1, 2, 3)

字典类型(需要有键值-值)d={‘xulinjie’:’xlj@qq.com’,’xjxjxj’:’op@qq.com’}

def func(a,*b,**c):
    print(a,b,c)

func(1,2,3,4,xu=1,ja=2)

输出如下(除了第一个数1是a的,其他都是元组或者字典):2,3,4代表一个元组,xu=1,ja=2代表一个字典。所以说参数数量是可变的!
这里写图片描述

可变参数就是能够再函数参数中定义任意变量,也就是说参数数量是可变的,通过使用*号来实现

def func(*num):
for num2 in num:
    print(num2)

func(1,2,3,4)

#输出
#1
#2
#3
#4

五、关键字参数

如果具有许多参数的函数,而你又希望只对其中的一些进行指定,那么就可以通过关键字参数,我们使用命名(关键字)而非位置来指定函数中的参数

利用关键字参数的优点

1.不再需要考虑参数顺序

2.我们可以只对那些我们希望赋予参数以赋值,只要其他的参数都具有默认参数值

例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13
def func(a,b=2,c=5):
    print('a:',a,'b:',b,'c:',c)

func(1,3,6)

func(1,3)

func(1,c=8)

func(c=8,a=9)

输出:

这里写图片描述

六、组合参数

可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。(这里指的可变参数是*d,关键字参数指**d)

def func(a, b, c=0, *args, **kw):
    print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw

七、递归函数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: xulinjie time:2017/10/13

def func(n):
    if n==1:
        print('递归结束')
    else:
        print('递归在跑')
        func(n-1)

func(10)

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值