python函数入门和使用

函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果。通过使用函数,可以提高代码的重复利用率。

  1. 函数的定义

  Python函数定义非常简单,使用关键字def定义。函数必须先定义后使用。Python函数定义的格式如下所示:

def 函数名(参数1,参数2,...):

    语句块

return [表达式]

  1. return[表达式]语句用于退出函数,选择性的向调用方返回一个表达式,不带参数值的return语句返回none
  2. 函数名可以是字母、数字或下划线组成的字符串,但是不能以数字开头。函数的参数放在一对圆括号中。参数的个数可以有一个或多个,参数之间用逗号隔开。括号后面以冒号结束,冒号下面就是函数的主体。函数的返回使用return语句,return [表达式]结束函数。如果return后面不带表达式,表示返回None。
  3. 形参:

位置形参:def demo(name,age)

 

默认值形参:def demo(name,age=12)

 

二者可以混合使用,但是 位置形参 必须在默认值形参之前

 

  1. 实参:

位置实参:demo('admin',12)

 

关键字实参: demo('admin',age=12)

 

二者可以混合使用,但是 位置实参 必须在关键字实参之前

 

  1. 动态传参:

*参数   是位置参数

 

**参数  是关键字参数 方法接受到的是字典

(1)位置参数

 

  位置参数指的是调用函数时根据函数定义的参数位置来传递参数。上述power()函数的x,n参数就表示参数。调用时可以直接通过传参嗲用。函数调用时传入参数个数必须与位置参数个数一致,否则会报错。实例如下:

# -*- coding:utf-8 -*-

 

def power(x, n):

    s = 1

    while n > 0:

        n = n - 1

        s = s * x

    return s

 

print "power(3, 2) = ", power(3, 2) #传入参数个数与定义的位置参数一致。

print "power(3) = ", power(3) #传入参数个数与定义的位置参数不一致。报错"TypeError: power() takes exactly 2 arguments (1 given)"

(2)默认参数

  函数的参数支持默认值。当某个参数没有传递实际的值时,函数将使用默认参数计算。特别注意的是,在函数定义和调用时,所有位置参数必须出现在默认参数前。修改power函数代码如下:

 

def power(x, n=2):

    s = 1

    while n > 0:

        n = n - 1

        s = s * x

    return s

 

print "power(3) = ", power(3) #不带参数n调用函数,n赋默认值为2

print "power(3, 2) = ", power(3, 2) #参数n指定值为2调用函数

print "power(3, 3) = ", power(3, 3) #参数n指定值为3调用函数

代码运行结果如下:

 

power(3) =  9

power(3, 2) =  9

power(3, 3) =  27

(3)可变参数

 

  可变参数就是值允许调用函数时传入参数个数是可变的,可以是1个,2个或者多个,这些可变参数在函数调用时自动组装为一个tuple。因此在函数内部获取可变参数时,参数接收到的是一个元组。可变参数在函数定义时的格式如下:

 

def 函数名(*args):

    ....

    return 变量或表达式

  可变参数在函数定义时对形参前加一个星号*,如*args。实例如下:

 

def fun1(x,y,*args):

    print "x = ", x

    print "y = ", y

    print "type(*args) = ", type(args) #可变参数args在函数内部获取到的类型

    print "args = ", args #可变参数args获取的传入的值

   

    sum = 0

    for i in args:

        sum += i

    print "sum = ", sum

 

fun1('A', 'B', 1, 2, 3, 4)

 代码运行输出结果如下:

 

x =  A

y =  B

type(*args) =  <type 'tuple'>

args =  (1, 2, 3, 4)

sum =  10

  通过上述实例,我们知道。可变参数args可以传入任意数量参数。函数内部获取可变参数的类型为tuple。

 

(4)关键参数

 

  关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。这是不同于可变参数的地方。函数定义时使用关键参数的格式如下:

 

def 函数名(**kw):

    ....

    return 变量或表达式

  关键参数在函数定义时对形参前加两个星号**,如**kw。实例如下:

 

def fun1(x,y,**kw):

    print "x = ", x

    print "y = ", y

    print "type(**kw) = ", type(kw)

    print "kw = ", kw

   

    for key, value in kw.items():

        print key, value

 

fun1('A', 'B', num1=1, num2=2, num3=3, num4=4)

 代码运行结果如下:

 

x =  A

y =  B

type(**kw) =  <type 'dict'>

kw =  {'num4': 4, 'num1': 1, 'num2': 2, 'num3': 3}

num4 4

num1 1

num2 2

num3 3

  从上述结果可以知道,函数内部获取的关键参数的类型为字典(dict),使用时以字典形式操作即可。

  1. 递归:

其实就是方法自己本身再调用自己

 

# 一个简单的递归

def fun(n):

    print(n)

    n += 1

    fun(n)

 

fun(1)

 

#结果会报

#  RecursionError: maximum recursion depth exceeded while calling a Python object

递归注意事项:有进也有出

 

递归的最大深度:官方定义是 1000,而实际上测试 只是 998

 

# 递归求阶乘

def factorial(n):

    if n == 1 :

        return 1

    else:

        return n*factorial(n-1)

递归的深度可以修改:

 

import sys

sys.setrecursionlimit(int num)   #调用sys系统模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值