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

posted @ 2018-07-12 16:55  我叫好名字  阅读(336)  评论(0编辑  收藏  举报