python中的lo函数_Python 【函数】

函数

内置函数

print() input() len() type() ...

print('Hello World')

函数 参数

定义函数

def greet(name):

print(name+'早上好')

return

第一行

def的意思是定义(define)

greet是【函数名】(自己取的)

再搭配一个括号和冒号,括号里面的name是参数(参数名也是自己取)

第二行

def下一行开始缩进的代码是函数要实现的功能,也叫【函数体】

第三行

函数内部一旦遇到return语句,就会停止执行并返回结果

没有return语句的函数,Python也会在末尾隐性地加上return None,

即返回None值(return None可以简写为return。),也可以省略return不写

————————————————————————

括号里可以有参数,又能没有参数

def pika1():

print('我最喜爱的神奇宝贝是皮卡丘')

def pika2(name):

print('我最喜爱的神奇宝贝是'+name)

————————————————————————

区别:第一个函数总是输出固定的一句话,所以不需要带参数

第二个函数需要参数name的参与,所以括号里需要带上name

################################

调用函数

输入函数名和参数对应的值

def pika2(name):

print('我最喜爱的神奇宝贝是'+name)

pika2('皮卡丘')          #调用函数,输入函数名pika()并输入参数'皮卡丘'

我最喜爱的神奇宝贝是皮卡丘

————————————————————————————

参数的传递:弄清函数有多少个参数,如何给参数赋值

def pika(name,person):                   #两个参数

print('我最喜爱的神奇宝贝是'+name)

print('我最喜爱的驯兽师是'+person)

pika('可达鸭','小霞')                   #两个参数赋值

我最喜爱的神奇宝贝是可达鸭

我最喜爱的驯兽师是小霞

————————————————————————————

######################################

函数重要概念

参数类型:位置参数、默认参数、不定长参数

————————————————————————————

位置参数

def menu(appetizer,course):

print('一份开胃菜:'+appetizer)

print('一份主食:'+course)

menu('话梅花生','牛肉拉面')

一份开胃菜:话梅花生

一份主食:牛肉拉面

话梅花生'和'牛肉拉面'是对应参数appetizer和course的位置顺序传递的,

所以叫位置参数

灵活运用:

#如果采用下面这种形式传递,就不需要理会参数位置

menu(course='牛肉拉面',appetizer='话梅花生')

一份开胃菜:话梅花生

一份主食:牛肉拉面

————————————————————

默认参数

def menu(appetizer,course,dessert='绿豆沙'):

print('一份开胃菜:'+appetizer)

print('一份主食:'+course)

print('一份甜品:'+dessert)

menu('话梅花生','牛肉拉面')

一份开胃菜:话梅花生

一份主食:牛肉拉面

一份甜品:绿豆沙

#因为已经默认将'绿豆沙'传递给dessert,调用时无须再传递。

灵活运用:

menu('话梅花生','牛肉拉面','银耳羹') #默认参数也可以改变

一份开胃菜:话梅花生

一份主食:牛肉拉面

一份甜品:银耳羹

————————————————————————————————

不定长参数

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('话梅花生','牛肉拉面','烤鸡翅','烤茄子','烤玉米')

一份开胃菜:话梅花生

一份主菜:牛肉拉面

一份甜品:绿豆沙

一份烤串:烤鸡翅

一份烤串:烤茄子

一份烤串:烤玉米

#默认参数需要放在后面 (dessert='绿豆沙')

#########################################################

return语句

为什么用return语句?

1.如果不是立即要对函数返回值做操作,

那么可以使用return语句保留返回值

def face(name):

return name + '的脸蛋'

def body(name):

return name + '的身材'

#face('李若彤')

#body('林志玲') #函数也是可以互相嵌套这里可以归为一步

print('我的梦中情人:'+face('李若彤') +' + ' + body('林志玲'))

我的梦中情人:李若彤的脸蛋 + 林志玲的身材

————————————————————————————

2.需要多次调用函数时,可以再定义一个主函数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('新垣结衣','长泽雅美'))

——————————————————————————————

3.python函数的返回值可以是多个

多个返回值的数据类型是元组

def lover(name1,name2):

face = name1 + '的脸蛋'

body = name2 + '的身材'

return face,body

a=lover('李若彤','林志玲')

print(a)

('李若彤的脸蛋', '林志玲的身材') #一次接受多个返回值的数据类型是元组

#也可以和列表一样取值

print('我的梦中情人:'+a[0]+' + '+a[1])

——————————————

##############################

变量作用域

函数内部使用(局部作用域),它们被称作【局部变量】

任何位置使用(全局作用域),它们叫【全局变量】

局部变量和全局变量【不要】取相同的名字

三种对比

def egg():

quantity = 108

egg()

print(quantity)

#会报错,不能在函数外部(全局作用域)使用函数内的局部变量

quantity = 108

def egg():

print(quantity)

egg()

#函数内的局部作用域,可以访问全局变量

def egg():

global quantity

quantity = 108

egg()

print(quantity)

#global语句可以将局部变量声明为全局变量

————————————————

扩展global

将局部变量变成全局变量

def egg():

global quantity

#global语句将变量quantity声明为全局变量

quantity = 108

egg()

print(quantity)

————————————————————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值