python -- 函数/返回值/传参
主要内容:
1. 什么是函数
2. 函数定义, 函数名, 函数体以及函数的调⽤
3. 函数的返回值
4. 函数的参数
⼀. 什么是函数
定义⼀个事 情或者功能. 等到需要的时候直接去⽤就好了. 那么这⾥定义的东⻄就是⼀个函数.
函数: 对代码块和功能的封装和定义
⼆. 函数的定义,函数名, 函数体以及函数的调⽤
1.函数的定义(声明)
我们使⽤def关键字来定义函数
函数的定义语法: (函数名的命名规则和使用跟变量基本一样 )
def 函数名(形参): #函数的声明 函数体 #函数被执行之后要执行的代码
我们来定义⼀个功能:
def xuexi(): print("学习使我快乐,学习使我日渐消瘦")
定义完了. 但是这个时候去执⾏. 会发现什么都没有发⽣.
因为我只定义了⼀个函数. 但 是还没有执⾏过这个函数.
2.函数的调⽤
使⽤函数名可以调⽤函数
写法:
函数名(), 这个时候函数的函数体会被执⾏
def xuexi(): #定义一个函数 print("学习使我快乐,学习使我日渐消瘦") #函数体 xuexi() #函数的调用 结果是: 学习使我快乐,学习使我日渐消瘦
程序执行过程:
如果还行再次执行学习操作,多次调用就可以了:
def xuexi(): print("学习使我快乐,学习使我日渐消瘦") #调用xuexi()函数 xuexi() xuexi() xuexi() xuexi() xuexi() xuexi()
继续分析:
功能执行完之后,默认会返回一个值:None
三. 函数的返回
执⾏完函数之后. 我们可以使⽤return来返回结果.
return的使⽤:
1. 函数中遇到return, 此函数结束, 不再继续执⾏.
# 1. 每个函数如果在函数中不写return, 默认返回None # 2. 我们也可以只写一个return, 也是返回None, 停止函数的执行 def yue(): print("约你") print("约我") print("约他") return #return表示此函数结束,不再进行下一步,后面没有跟返回值,默认返回None print("约谁呀") # 这句话不会被执⾏ yue()one
2. 给函数的调⽤者⼀个访问结果
def yue(): #定义一个函数 print("约你") #函数体 print("约我") print("约他") return "美⼥⼀枚" #返回值,可以是多个,调用方同时也接收多个 girl = yue() # 函数的调用,用变量girl来接收函数的返回值,先执行函数体,然后将return值赋值给变量girl print(girl) # 美⼥⼀枚
3.函数的返回值可以是多个,当返回多个时,调用方接收多个,接收类型是tuple(元组),
可以后续对元组解构
def yue(): print("打开陌陌") print("大阳哥出马") return "大妈", "萝莉", "模特" ret= yue() # 多个返回值在接受的位置接受到的是tuple类型的数据 print(ret) #结果是元组类型 结果是: 打开陌陌 大阳哥出马 ('大妈', '萝莉', '模特')
a,b,c= yue() # 对返回值(元组类型)解构 print(a) print(b) print(c) 结果是: 打开陌陌 大阳哥出马 大妈 萝莉 模特
总结⼀下:
1. 遇到return. 此函数结束, 函数后⾯的东⻄将不会再执⾏
2. return 返回值
关于返回值:
如果return什么都不写 或者 ⼲脆不写return .那么返回的就是None
如果return后⾯写了⼀个值. 则调⽤者可以接收⼀个结果
如果return后⾯写了多个结果, 则调⽤者可以接收⼀个tuple, 调⽤者可以直接解构成 多个变量
四. 函数的参数(可以通过函数的参数来给函数传递一些信息)
参数:函数在调⽤的时候指定具体的⼀个变量的值. 就是参数.
# 参数: 在函数执行的时候给函数传递的信息
# 形参: 在函数声明的位置.声明出来变量
# 实参: 在函数调用的时候. 实际你给函数传递的值
# 函数的参数个数是没有要求的 但是,在运行的时候. 形参和实参要匹配. 按照位置把实参赋值给形参
# 参数的分类:
# 站在实参的角度:
# 1. 位置参数
# 2. 关键字参数
# 3. 混合参数, 注意顺序. 先写位置参数, 然后在写关键字参数. 否则会报错
# 站在形参的角度:
# 1. 位置参数
# 2. 默认值参数
# 3. 默认值参数和位置参数混合使用. 顺序: 先写位置参数. 然后在写默认值参数
语法:
def 函数名(形参列表): #函数的声明 函数体
函数名(实参列表) #函数的调用
#实参和形参位置是对应的,实参赋值给形参,例如people对应"自律者",
name对应"你和他"(这里的形参/实参都是位置参数)
def mingyan(people,name): #people形参,在声明变量的位置 print("%s得自由" % people) print("那%s是%s吗?" % (name,people)) return "你猜","我干嘛要告诉你","你真是咸吃萝卜淡操心" mingyan("自律者","你和他") #"自律者"实参,在函数调用的位置,在调用mingyan函数的时候给2个形参2个对应值 mingyan("谦让者","大部分人") 结果是: 自律者得自由 那你和他是自律者吗? 谦让者得自由 那大部分人是谦让者吗?
#实参包括位置参数和关键字参数 #形参包括位置参数和默认值参数 #实参和形参是相互匹配的,如果使用混合参数,不一一对应,那么要保证先写位置参数(位置参数需要一一对应) def xinxi(xuexi,chifan,shangcesuo,shuijiao="床",dayouxi="吃鸡"): #参数能有多个 先写位置参数,再写默认参数 print(xuexi) print(chifan) print(shuijiao) print(shangcesuo) print(dayouxi) # xinxi('python',"汉堡包",dayouxi="lol",shuijiao="床",shangcesuo="卫生间") #注意,先写完位置参数,再写关键字参数 xinxi("学习",shangcesuo="上厕所",chifan="黄焖鸡") #上面的形参里面有默认值,所以实参不用全部输完 xinxi("学习",shangcesuo="上厕所",chifan="黄焖鸡",dayouxi="王者荣耀") #实参可以修改形参的默认值 结果是: 学习 黄焖鸡 床 上厕所 吃鸡 学习 黄焖鸡 床 上厕所 王者荣耀
四. 函数的应用
#1+2+3+4+5+6+7+8+9+....+100 = ? 5050 # 函数是对功能的封装 def sum(n): s = 0 count = 1 while count <= n: s = s + count count = count + 1 return s ret = sum(100) print(ret) #5050
#计算n是奇数还是偶数 def fn(n): if n%2 == 0: return "偶数" return "奇数" print(fn(456)) #偶数
今日主要内容:
1.函数:对功能的封装
2.语法:
def 函数名(形参):
函数体
函数名(实参)
3.函数名:命名规则和变量一样
4.函数的返回值:
return, 函数执行完毕. 不会执行后面逻辑
1. 如果函数中不写return返回None
2. 只写return 返回None
3. return 返回值. 返回一个值
4. return 值1, 值2,... 返回多个值. 调用方接收到的是元组
5.参数:
在函数执行的时候给函数传递的信息
1. 形参:
1. 位置参数.
2. 默认值参数. 当调用的时候不给传值使用默认值
3. 混合使用. 顺序: 1. 位置参数, 2, 默认值参数
2. 实参:
1.位置参数. 按照位置给形参赋值
2. 关键字参数. 按照名称给形参赋值
3. 混合参数. 先用位置参数, 再用关键字参数
预习:
1. 不定参数
2. 作用域的问题
3. global和nonlocal