Python基础-Python函数
1、函数的申明
Python中使用def关键字来声明函数,声明函数的格式为:
def func_name(args):
...body...
[return ...]
'''函数名后面必须加冒号;如果函数体和def不在同一行,则必须缩进;return指定函数返回值,用来结束函数'''
2、函数参数
def myFunction(arg1,arg2,*args,**kargs):
函数体
'''arg1和arg2是开发者自定义的参数名。在函数里,参数名可以当成变量使用;
*args是将多个参数生成一个列表。在函数里,可以将args当成一个列表来使用里面的参数;
**kargs将多个参数以字典的形式表示。在函数里,通过字典的读取方式获取kargs里的参数'''
示例:
def get_name1(arg1,arg2):
print('1、我的名字是:',arg1,arg2)
def get_name2(*args):
print('2、*args的数据格式是:',args)
print('2、我们的名字分别是:',args[0],args[1])
def get_name3(**kwargs):
print('3、**kwargs的数据格式是:',kwargs)
print('3、我们的名字分别是:', kwargs['name1'], kwargs['name2'])
# 调用函数
get_name1('Lucy','Tom')
get_name2('Lily','Mary')
get_name3(name1='Lilei',name2='Tony')
执行结果:
1、我的名字是: Lucy Tom
2、*args的数据格式是: ('Lily', 'Mary')
2、我们的名字分别是: Lily Mary
3、**kwargs的数据格式是: {'name1': 'Lilei', 'name2': 'Tony'}
3、我们的名字分别是: Lilei Tony
3、函数的返回值
将函数的处理结果传递到函数外的程序使用,有关键词return和yield实现。return是在返回结果的同事中断函数的执行,yield是返回结果并不中断函数的执行,使用了 yield 的函数被称为生成器(generator)。示例:
# return返回
def myReturn():
for i in range(5):
return i
# yield返回
def myYield():
for i in range(5):
yield i
# 调用函数
result1 = myReturn()
print('return数据类型是:',type(result1))
result2 = myYield()
print('yield数据类型是:',type(result2))
for i in result2:
print('yield:',i)
执行结果:
return数据类型是: <class 'int'>
yield数据类型是: <class 'generator'>
yield: 0
yield: 1
yield: 2
yield: 3
yield: 4
4、函数的调用
函数的调用是“函数名+花括号”的方式。示例:
def fun1():
print('我是函数fun1')
def fun2(name):
print('我是函数fun2,我的名字是',name,'现在我要调fun1')
fun1() #调fun1
def fun3(name):
print('我是func3,我的名字是',name,'现在我要调fun2')
fun2('Lily') # 调fun2
# 主程序
if __name__=='__main__':
fun3('Lucy')
执行结果:
我是func3,我的名字是 Lucy 现在我要调fun2
我是函数fun2,我的名字是 Lily 现在我要调fun1
我是函数fun1
5、变量的作用域
x=3
def myfunc(a,b):
c=10
print(x,a,b,c)
myfunc(5,6) # 输入结果:3 5 6 10
上面的函数涉及到了4个变量:a、b、c、x。其中:
-全局变量x
-本地变量a、b、c,其中本地变量a和b是函数的参数
全局变量:在出程序里定义的变量成为全局变量,全局变量在所有作用域都可读
局部变量:在函数内部定义的变量成为局部变量,局部变量只能在本函数里可读
函数读取变量的优先级:函数在读取变量时,优先读取本身的局部变量,然后再去读全局变量
定义全局变量:global