函数——定义和调用函数、函数的重要概念
有感于现在python教程多如牛毛,且大多高不可攀,多次拜读而不得其门道,遂由入门到放弃。偶有机缘,得一不错教程,得以入门,现博客分享,想要获取完整教程,ff17328081445。
函数是什么
print('Hello World')
print('万物的终极答案')
print(42)
>>>>>>>>>>>>>>>>>>>>>>>>
Hello World
万物的终极答案
42
定义函数
#!/usr/bin/python3
# 第一个函数
def pika1():
print('我最喜爱的国学大师')
# 第二个函数
def pika2(name):
print('我最喜爱的国学大师' + name)
# 第三个函数
def pika3(name, person):
print('我最喜爱的国学大师' + name)
print('我最喜爱的儒学大师' + person)
PS:定义函数,并不输出
调用函数
def pika1():
print('我最喜爱的国学大师')
# 该函数没有参数,直接调用函数名。记得英文括号一定不能少
pika1()
def pika2(name):
print('我最喜爱的国学大师' + name)
# 需要给参数name赋值,每次调用都可以给参数赋不同的值
pika2('易中天')
pika2('白居易')
def pika3(name, person):
print('我最喜爱的国学大师' + name)
print('我最喜爱的儒学大师' + person)
# 需要给两个参数分别赋值,并用逗号隔开,否则会报错
pika3('易中天', '白居易')
>>>>>>>>>>>>>>>>>>>>>>>>
我最喜爱的国学大师
我最喜爱的国学大师易中天
我最喜爱的国学大师白居易
我最喜爱的国学大师易中天
我最喜爱的儒学大师白居易
函数的重要概念
参数类型
位置参数
#!/usr/bin/python3
def menu(appetizer,course):
print('我喜欢的电影:'+appetizer)
print('我喜欢的明星:'+course)
menu('功夫','周星驰')
>>>>>>>>>>>>>>>>>>>>>>>>
我喜欢的电影:功夫
我喜欢的明星:周星驰
PS:这里的'功夫'和'周星驰'是对应参数appetizer和course的位置顺序传递的,所以被叫作【位置参数】
默认参数
#!/usr/bin/python3
def menu(appetizer,course,dessert='吴孟达'):
print('我喜欢的电影:'+appetizer)
print('我喜欢的明星:'+course)
print('配角:'+dessert)
menu('功夫','周星驰')
#因为已经默认将'吴孟达'传递给dessert,调用时无须再传递。
>>>>>>>>>>>>>>>>>>>>>>>>
我喜欢的电影:功夫
我喜欢的明星:周星驰
配角:吴孟达
PS:其中dessert='吴孟达'为默认参数。
不定长参数
#!/usr/bin/python3
def menu(*barbeque):
print(barbeque)
menu('烤鸡翅','烤茄子','烤玉米')
#这几个值都会传递给参数barbeque
>>>>>>>>>>>>>>>>>>>>>>>>
('烤鸡翅', '烤茄子', '烤玉米')
ps:*barbeque为不定长参数
--------------------------------
#!/usr/bin/python3
def menu(appetizer, course, *barbeque, dessert='绿豆沙'):
print('一份开胃菜:' + appetizer)
print('一份主菜:' + course)
print('一份甜品:' + dessert)
for i in barbeque:
print('一份烤串:' + i)
menu('话梅花生', '牛肉拉面', '烤鸡翅', '烤茄子', '烤玉米')
>>>>>>>>>>>>>>>>>>>>>>>>
一份开胃菜:话梅花生
一份主菜:牛肉拉面
一份甜品:绿豆沙
一份烤串:烤鸡翅
一份烤串:烤茄子
一份烤串:烤玉米
return语句
#!/usr/bin/python3
def niduoda(age):
if age < 12:
return '哈,是祖国的花朵啊'
elif age < 25:
return '哇,是小鲜肉呢'
else:
return '嗯,人生才刚刚开始'
print(niduoda(30))
>>>>>>>>>>>>>>>>>>>>>>>>
嗯,人生才刚刚开始
#!/usr/bin/python3
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('刘亦菲','林志玲'))
>>>>>>>>>>>>>>>>>>>>>>>>
我的梦中情人:刘亦菲的脸蛋 + 林志玲的身材
变量作用域
x = 99 # 全局变量x
def num():
x = 88 # 局部变量x
print(x)
num()
# 打印局部变量x
print(x)
# 打印全局变量x
>>>>>>>>>>>>>>>>>>>>>>>>
88
99
#!/usr/bin/python3
def egg():
global quantity
#global语句可以将局部变量声明为全局变量
quantity = 108
egg()
def egg():
print(quantity)
egg()
#函数内的局部作用域,可以访问全局变量
print(quantity)
>>>>>>>>>>>>>>>>>>>>>>>>
108
108