《Python基础教程》学习笔记——函数

1.创建函数

使用def语句就可以实现函数的定义,python中函数也包括以下几个部分:

  • 函数名(自定义,但是要符合命名规则,不能使用关键字)
  • 形参列表(可以有0个或多个形参)
  • 函数体
  • 返回值(用return语句实现,也可以没有返回值(或者说返回None))
#定义一个名为hello的函数,并调用它
def hello(name):
    return 'Hello, '+name+'!'

print hello('world')
# Hello, world!
print hello('Gumby')
#Hello, Gumby!

#定义一个计算斐波那契数列的函数
def fibs(num):
    result = [0,1]
    for i in range(num-2):
        result.append(fibs[-2]+fibs[-1])
    return result

fibs(10)
#[0,1,1,2,3,5,8,13,21,34]

2.关键字参数与默认值

举例说明:

def hello_1(greeting,name):
    print '%s,%s!' % (greeting,name)

#调用hello_1函数,这里就使用了关键字参数
hello_1(greeting='Hello',name='world')
#这类使用参数名提供的参数就叫做关键字参数

在使用关键字参数的时候,即使传入的参数的顺序与形参的顺序不一致,也能够得到预期的结果,而且也能够明确每个传入参数的含义。

def store(patient,hour,minute,hour,day.month):
    print patient,hour,minute,hour,day.month

#以下两个语句得到的效果一样
store(patient = 'Mr Brainsample',hour = 10,minute = 20,day = 30,month = 5)
store(hour = 10,patient = 'Mr Brainsample',day = 30,minute = 20,month = 5)

关键字参数可以在函数中给参数提供默认值

def hello_2(greeting = 'Hello',name = 'world'):
    print '%s,%s!' %s (greeting,name)

#有了默认值以后,不用传入参数,可以实现对函数的正确调用
hello_2()
#Hello,world!
hello_2('Greeting')
#Greeting,world!
hello_2('Greeting','universe')
#Greeting,universe!

如果想给name参数传入值,而让greeting参数使用默认值,那么采用如下方法:

hello_2(name='Gumby')
# Hello,Gumby!

3.收集参数

如果用户传入的参数的数目大于函数中定义的参数的数目,那么这个时候就要用到收集参数:

  • *params :将多余的参数收集到一个元组中,不能处理多余的关键字参数
  • **keypars:将多余的参数收集到一个字典中,用于处理多余的关键字参数
def print_params(*params):
    print params

print_params('Testing')
#('Testing',)
print(1,2,3)
# (1,2,3)

def print_params_1(**keypars):
    print keypars

print_params_1(x=1,y=2,z=3)
#{'z':3,'x':1,'y':2}

args = {'name':'Gumby','age':42}
print_params_1(**args)

def print_params_2(x,y,z=3,*params,**keypars):
    print x,y,z
    print params
    print keypar

print_params_2(1,2,3,4,5,6,7,foo=1,bar=2)
# 1 2 3
  (4,5,6,7)
  {'foo':1,'bar':2}

4. 作用域

作用域分为全局作用域与局部作用域。如果想在函数内部修改全局变量的值,需要用到global关键字。

x = 1
def change_global():
    global x
    x = x+1

5.递归

#利用递归实现阶乘
def factorial(n):
    if n==1:
        return 1
    else:
        return n*factorial(n-1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值