Python函数,,python定义函数


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

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

形参:

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

实参:

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

函数的四种参数类型

1)位置参数和默认参数:

例:

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

#age、name必填参数,位置参数

#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)关键字参数:

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

例:

defkw_arg(name,**kwargs):

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

print(name,kwargs)

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

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

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)

deftest():

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

name=‘Sriba‘

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

returnnames

test()调用函数

print(‘修改后‘,name)

print(‘修改后names‘,names)

Python函数

评论关闭