版权声明:未经允许,请勿私自转载!!! https://blog.csdn.net/weixin_44755148/article/details/90233284
Python—函数的定义、调用、参数类型、return语句、变量作用域解析说明
函数和参数
函数的定义
#举例展示
def greet(name):
print(name+'早上好')
return
函数的调用
# 最关键的是:得弄清楚这个函数有多少个参数,如何给参数赋值,这个过程在函数里叫做参数的传递(pass)
#举例展示
def pika2(name):
print('我最喜爱的神奇宝贝是'+name)
pika2('皮卡丘') #调用函数,输入函数名pika()并输入参数'皮卡丘'
pika2('喷火龙') #调用函数,输入函数名pika()并输入参数'喷火龙'
#答案展示
我最喜爱的神奇宝贝是皮卡丘
我最喜爱的神奇宝贝是喷火龙
函数的重要概念
参数类型
位置参数
def menu(appetizer,course):
print('一份开胃菜:'+appetizer)
print('一份主食:'+course+'\n')
#转义字符\n,表示换行
#此处依据位置传入参数
menu('牛肉拉面','话梅花生')
menu('话梅花生','牛肉拉面')
#结果展示
一份开胃菜:牛肉拉面
一份主食:话梅花生
一份开胃菜:话梅花生
一份主食:牛肉拉面
#如果采用下面这种形式传递,就不需要理会参数位置,直接指定参数的具体内容
menu(course='牛肉拉面',appetizer='话梅花生')
#结果展示
一份开胃菜:话梅花生
一份主食:牛肉拉面
默认参数—必须放在位置参数之后,也必须放在不定长参数后面
def menu(appetizer,course,dessert='绿豆沙'):
print('一份开胃菜:'+appetizer)
print('一份主食:'+course)
print('一份甜品:'+dessert)
menu('话梅花生','牛肉拉面') #默认参数如不需要改变,则不用传参
menu('话梅花生','牛肉拉面','银耳羹') #需更改默认参数,则直接传参(默认参数是可变的)
#银耳羹对应参数dessert
#结果展示
一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:绿豆沙
一份开胃菜:话梅花生
一份主食:牛肉拉面
一份甜品:银耳羹
不定长参数—格式比较特殊,是一个星号*加上参数名
#示例1
order=('烤鸡翅','烤茄子','烤玉米')
#元组的长度没有限制
def menu(*barbeque):
print(barbeque)
menu(*order)
#结果展示
('烤鸡翅', '烤茄子', '烤玉米')
#示例2 默认参数一定是放在最后面的
def menu(appetizer,course,*barbeque,dessert='南瓜饼'):
print('一份开胃菜'+appetizer)
print('一份主菜'+course)
print('一份甜品'+dessert)
barbeque = ('烤五花肉','烤茄子','烤鱼','烤四季豆','烤土豆')
for i in barbeque:
print('一份烤串:'+i)
menu(appetizer = '泡椒海带',course = '菠萝饭',dessert = '天蚕土豆')
#结果展示
一份开胃菜泡椒海带
一份主菜菠萝饭
一份甜品天蚕土豆
一份烤串:烤五花肉
一份烤串:烤茄子
一份烤串:烤鱼
一份烤串:烤四季豆
一份烤串:烤土豆
return 语句
返回值—return是返回值,当你输入参数给函数,函数就会返回一个值给你
def niduoda(age):
if age < 12:
return '哈,是祖国的花朵啊'
elif age < 25:
return '哇,是小鲜肉呢'
else:
return '嗯,人生才刚刚开始'
print(niduoda(30))
#结果展示
嗯,人生才刚刚开始
如需多次调用函数,可以设定主函数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('李若彤','林志玲'))
#结果展示
我的梦中情人:李若彤的脸蛋 + 林志玲的身材
return返回多个值,多个返回值的数据类型是元祖(tuple)
def lover(name1,name2):
face = name1 + '的脸蛋'
body = name2 + '的身材'
return face,body
a=lover('李若彤','林志玲')
print(a)
#结果展示
('李若彤的脸蛋', '林志玲的身材')
没有return语句的函数会默认返回None值
#第一个函数
def fun():
a ='I am coding'
print(fun())
#第二个函数
def fun():
a='I am coding'
return a
print(fun())
#结果展示
None
I am coding
函数内部遇到第一个return就会返回
def fun():
return 'I am coding.'
return 'I am not coding.'
print(fun())
#结果展示
I am coding.
return语句的总结
变量的作用域
局部变量—在一个函数内定义的变量仅能在函数内部使用(局部作用域)
def num():
x=88 #局部变量x
print(x)
num()
#结果展现
88
全局变量—在所有函数之外赋值的变量,可以在程序的任何位置使用(全局作用域)
x=99 #全局变量x
def num():
x=88 #局部变量x
print(x)
num()
#打印局部变量x
print(x)
#打印全局变量x
#结果展现
88
99
全局作用域中的代码中不能使用任何局部变量,如下为错误代码展示
#全局变量在哪里都可以被使用,变量quantity,不在我们定义的函数内的,所以是全局变量。
quantity = 108
def egg(): #定义一个函数,叫egg()
print(quantity) #函数内的功能是打印变量quantity
egg() #调用这个函数
#结果展示
108
将局部变量修改为全局变量(global语句)
def egg():
global quantity
#global语句将变量quantity声明为全局变量
quantity = 108
egg()
print(quantity)
#结果展示
108