首页 > 代码库 > Python函数

Python函数

python定义函数时,使用def关键字,后面加函数名,函数名不可重复。

函数在调用时,可以传入参数,参数分为形参和实参

形参:

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。

实参:

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。函数调用结束返回主调用函数后则不能再使用该形参变量。

  • 函数的四种参数类型

1)位置参数默认参数:

例:

def reg(name,age,sex=‘‘):

    #agename必填参数,位置参数

    #sex是默认值参数,不是必传

    print(‘hello %s,age is %s,sex is %s‘%(name,age,sex))

reg(age=‘吴冰‘,name=38,sex=‘未知‘)

2)可变参数:

可变参数,也叫参数组,也不是必填的,它接收到的是一个元组。它把调用函数时传进去的每一个参数都放到一个元组里

例:

def post(*args):

    print(args)

post(‘001‘,‘denglu‘,‘http://www.baiudd.com‘,‘post‘,‘a=1‘)

def other(name,age,country=‘china‘,*args):

    print(name)

    print(age)

    print(country)

    print(args)

other(‘qhy‘,‘999‘)

3关键字参数:

关键字参数使用**来接收,后面的参数也是不固定的,想写多少个写多少个,当然也可以和上面的几种一起来使用,如果要一起使用的话,关键字参数必须在最后面。

  例:

def kw_arg(name,**kwargs):

#位置参数、关键字参数,调用的时候会把传入的关键字参数放到kwargs这个字典中

print(name,kwargs)

kw_arg(‘sriba‘,sex=‘‘,age=18)#调用,sexage就是关键字调用

 

注意:如果必填参数、默认值参数、可变参数和关键字参数你要一起用的话,必须参照必填参数、默认值参数、可变参数和关键字参数的顺序接收,否则就会报错

def other2(name,country=‘china‘,*args,**kwargs):

    #如果必填参数、默认值参数、可变参数和关键字参数你要一起用的话

    #必须参照必填参数、默认值参数、可变参数和关键字参数的顺序接收,否则就会报错

    print(name)

    print(country)

    print(args)

    print(kwargs)

other2(‘lalala‘,‘xxx‘)

other2(‘lalala‘,‘beijing‘,‘python‘,‘changping‘,user=‘qhy‘)

 

  • 函数返回值

每个函数都有返回值,如果没有在函数里面指定返回值的话,在python里面函数执行完之后,默认会返回一个None,函数也可以有多个返回值,如果有多个返回值的话,会把返回值都放到一个元组中,返回的是一个元组。

为什么要有返回值呢,是因为在这个函数操作完之后,它的结果在后面的程序里面需要用到。

函数中的返回值使用return,函数在遇到return就立即结束。如果没有返回值的话,默认返回None

如果函数return多个值的话,那么它会把多个值放到一个元组里面去

例:def plus(a,b):

    c = a+b

    return c

 

  • 局部变量和全局变量

局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了,比如上面的c就是一个局部变量,出了这个函数之后,就没有c这个值了

全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。


2

3

4

5

6

7

8

9

10

11

12

        name = ‘marry‘#字符串全局变量

        names = []#list全局变量

        print(name)

        print(names)

        def test():

            global name #修改name的值就需要用global关键字

            name = ‘Sriba‘

            names.append(name)#修改全局变量names的值

            return names

       test()调用函数

       print(‘修改后‘,name)

       print(‘修改后names‘,names)

 

Python函数