首页 > 代码库 > 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)关键字参数:
关键字参数使用**来接收,后面的参数也是不固定的,想写多少个写多少个,当然也可以和上面的几种一起来使用,如果要一起使用的话,关键字参数必须在最后面。
例:
def kw_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关键字,直接就可以修改。
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函数