Python—函数的定义、调用、参数类型、return语句、变量作用域解析说明

版权声明:未经允许,请勿私自转载!!! https://blog.csdn.net/weixin_44755148/article/details/90233284

函数和参数

在这里插入图片描述

函数的定义

在这里插入图片描述

#举例展示
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

猜你喜欢

转载自blog.csdn.net/weixin_44755148/article/details/90233284