python 函数

一. 什么是函数

  函数: 对代码块和功能的封装和定义.等到需要使用这个功能的时候直接调用就可以了.函数名命名规则和变量一样

二. 函数定义, 函数名, 函数体以及函数的调用

  语法:def 函数名(形参):

      函数体(代码块)

  调用:

    函数名(实参)

#定义一个函数名为day的函数,里面打印七条语句,从周一到周日.
def day():
    print('周一')
    print('周二')
    print('周三')
    print('周四')
    print('周五')
    print('周六')
    print('周日')
day()  #调用函数,然后执行函数day
# 周一
# 周二
# 周三
# 周四
# 周五
# 周六
# 周日

三. 函数的返回值

  函数的返回值:return, 函数执行完毕. 不会执行后面逻辑

        1. 如果函数中不写return返回None
2. 只写return 返回None
3. return 返回值. 返回一个值
4. return 值1, 值2,... 返回多个值.个值需要用,隔开.调用方接收到的是元组
def day():
    print('周一')
    print('周二')
    print('周三')
    print('周四')
    print('周五')
    print('周六')
    print('周日')
    return '一周过完了'  #遇到return,函数执行结束,不会继续执行下面的语句
    print('新的一周就要来了')  #在return语句后面,无法打印
print(day())  #调用函数,然后执行函数day
# 周一
# 周二
# 周三
# 周四
# 周五
# 周六
# 周日
# 一周过完了

def f():
    print('今天吃饭了吗')
s = f()
print(s)  #没有return,所以返回值为None

def f():
    print('今天吃饭了吗')
    return  #只有return,返回值仍为None
ss = f()
print(ss)  #None

def day():
    print('周一')
    print('周二')
    print('周三')
    print('周四')
    print('周五')
    print('周六')
    print('周日')
    return '一周结束','下一周就要开始了'  #return值有两个,接收到的是元组
a,b = day()  #函数返回值接收的是元组,可以解构来获取值
print(a)  #一周结束
print(b)  #下一周就要开始了

 

四. 函数的参数 

  参数, 函数在调用的时候指定具体的一个变量的值.

def day(c):
    print('周%s'%c)
day('')  #周一  通过调用day函数把实参'一'的值传递给形参'c'

  不仅可以定义函数打印语句,也可以定义函数拥有其他的功能,然后调用函数.

#定义两个数相加的函数
def q(a,b):  #定义函数名为q的函数,形参是a,b
    s = a + b
    return s  #返回值为s
sss = q(3,5)  #调用函数,把实参3,5传递给形参a,b
print(sss)  #8

#定义两个数互相对换的函数
def q(a,b):
    a,b = b,a
    return a,b  #return的返回值是元组
a,b = q(3,5)
print(a,b)  #5,3
  当函数的形参值很多时,我们在调用时写实参还要记着形参的位置,使用位置参数会很麻烦,可以使用关键字参数(按照名称给形参赋值)和混合参数(先用位置参数,
再用关键字
参数). 最终到的结果都一样.
def f(name,age,sex,weight,height,hobby):
    print('name:%s,age:%s,sex:%s,weight:%s,height:%s,hobby:%s' %(name, age, sex, weight, height, hobby))
f('小小',18, '', 90, 1.8, '吃饭')  #使用位置参数
f(sex='', hobby='吃饭', name='小小', height=1.8, weight=90, age=18)  #使用关键字参数,不用在意形参的位置
f('小小', 18, '', hobby='吃饭', height=1.8, weight=90)  #使用混合参数
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭
# name:小小,age:18,sex:女,weight:90,height:1.8,hobby:吃饭

  函数的形参也可以为默认值参数(给参数一个具体的值)和混合参数(先用位置参数,再用默认值参数).

def f(name,age,sex='',add='昌平'):  #混合使用,name和age没有被赋值,是位置参数. sex和add都被赋值,是默认值参数
    print('name:%s,age:%s,sex:%s,add:%s' %(name,age,sex,add))
f('小小',18)  #sex默认为'男',add默认为'昌平'
f('尔尔',22)
f('哈哈',19,'')  #实参'女'传递给sex,sex值变成'女'
f('天天',26,'','沙河')  #实参'沙河'传递给形参add,add的值为'沙河'
# name:小小,age:18,sex:男,add:昌平
# name:尔尔,age:22,sex:男,add:昌平
# name:哈哈,age:19,sex:女,add:昌平
# name:天天,age:26,sex:女,add:沙河

  总结形参和实参的分类:

  1. 形参:
  1. 位置参数.
   2. 默认值参数. 当调用的时候不给传值使用默认值
  3. 混合使用. 顺序: 1. 位置参数, 2, 默认值参数
  2. 实参:
  1.位置参数. 按照位置给形参赋值
  2. 关键字参数. 按照名称给形参赋值
  3. 混合参数. 先用位置参数, 再用关键字参数
无限的我,现在才开始绽放,从东边的第一缕阳光到西边的尽头
原文地址:https://www.cnblogs.com/huangqihui/p/9300118.html