①定义:函数是组织好的、可以重复使用的、用来实现单一功能的代码。
②定义函数的语法:
def 函数名(参数1,参数2,…,参数n):
函数体
return语句
示例:
#函数名:最好是取体现函数功能的名字,一般用小写字母和单下划线、数字等组合 def greet(name): #参数:根据函数功能,括号里可以有多个参数,也可以不带参数,命名规则与函数名相同 #规范:括号是英文括号,后面的冒号不能丢 print(name+'早上好') #函数体:函数体就是体现函数功能的语句,要缩进,一般是四个空格 return
③调用函数:
greet('皮卡丘')
④参数类型:
主要的参数类型有:位置参数、默认参数、不定长参数。
a)参数按位置顺序传递的,被叫作【位置参数】。
b)默认参数必须放在位置参数之后。
c)不定长参数
它的格式比较特殊,是一个星号*加上参数名,来看下面的例子:
def menu(*barbeque): print(barbeque) menu('烤鸡翅','烤茄子','烤玉米') #这几个值都会传递给参数barbeque
def menu(appetizer, course, *barbeque, dessert='绿豆沙'): print('一份开胃菜:' + appetizer) print('一份主菜:' + course) print('一份甜品:' + dessert) for i in barbeque: print('一份烤串:' + i) menu('话梅花生', '牛肉拉面', '烤鸡翅', '烤茄子', '烤玉米')
⑤return语句
如果不是立即要对函数返回值做操作,那么可以使用return语句保留返回值。
我们的函数功能都是第一时间把参数打印出来。而在很多时候,当多个函数之间相互配合时,我们并不需要第一时间就将结果打印出来,而是需要将某个返回值先放着,等到需要的时候再做进一步的处理。
不需要return的情况:
def face(name): print(name + '的脸蛋') def body(name): print(name + '的身材') face('李若彤') body('林志玲') #分别调用face()和body()函数
需要return的情况:
def face(name): # return name + '的脸蛋' #该函数返回字符串'XXX的脸蛋' def body(name): # return name + '的身材' #该函数返回字符串'XXX的身材' print('我的梦中情人:'+face('李若彤') +' + ' + body('林志玲')) #将返回值拼接并打印出来
当我们需要多次调用函数时,可以再写一个主函数main(),调用非主函数的返回值。
def face(name): return name + '的脸蛋' def body(name): return name + '的身材' def main(dream_face,dream_body): return '我的梦中情人:' + face(dream_face) + ' + ' + body(dream_body) print(main('李若彤','林志玲')) print(main('新垣结衣','长泽雅美'))
接下来要讲的是return的一个特别的用法,我们看到前面所有的return语句,都是返回1个值,如果要返回多个值,我们该怎么办呢?
def lover(name1,name2): face = name1 + '的脸蛋' body = name2 + '的身材' return face,body a=lover('李若彤','林志玲') print('我的梦中情人:'+a[0]+' + '+a[1])
Python语言中的函数返回值可以是多个,一次接受多个返回值的数据类型就是元组。而其他语言都不行,这是Python相比其他语言的简便和灵活之处。
没有return语句的函数会默认返回None值。
此外,return还有一个“副作用”:一旦函数内部遇到return语句,就会停止执行并返回结果。
def fun(): return 'I am coding.' return 'I am not coding.' print(fun())
总结:
①如果不是立即要对函数返回值做操作,那么可以使用return语句保留返回值;
②需要多次调用函数时,可以再定义一个主函数main(),调用非主函数的返回值;
③python的函数返回值可以是多个,多个返回值的数据类型是元组tuple;
④没有return的函数会默认返回None;
⑤一旦函数内部遇到return语句,就会停止执行并返回结果。
作用变量域:
①在一个函数内定义的变量仅能在函数内部使用(局部作用域),它们被称作【局部变量】。
②在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域),它们叫【全局变量】。
局部变量只能在函数内部使用,全部变量是公用的,没有使用限制。
如果你非要将局部变量变成全局变量,就像把私人房间的东西挪到公共区域,可不可以呢?Python也是能够满足你的,只不过要用到一种新的语句global语句:
def egg(): quantity = 108 egg() print(quantity) #会报错,不能在函数外部(全局作用域)使用函数内的局部变量 quantity = 108 def egg(): print(quantity) egg() #函数内的局部作用域,可以访问全局变量 def egg(): global quantity quantity = 108 print(quantity) #global语句可以将局部变量声明为全局变量