函数的介绍

函数的定义

函数是对程序逻辑化进行构架或者过程化的议程编程方法。可复用性强,可以调高代码的重复利用率
定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名

特性

  • 减少重复代码
  • 使程序变得可扩展
  • 使程序变得可维护
    语法:
def func():   # 定义函数名
    ''' 注释 '''
    print("hello,word")
founc()   # 调用函数

为什么要使用函数?

def write_msg():
    with open("写文件.txt",'a+') as f:
        f.write('函数测试\n')

def fount1():
    print('fount1')
    write_msg()

def fount2():

    print("fount2")
    write_msg()
def fount3():
    print('fount3')
    write_msg()

fount1()
fount2()
fount3()

从上述中看出,只需要修改write_msg就可以被一直调用。避免重复写
函数可以带参数:

# 下面这段代码
a,b=5,8
c = a ** b
print(c)

#改成函数
def founc(x,y):
    c = a**b
    print(c)
    return founc
c = founc(5,8)
print(c)

函数的参数

参数可以让你的函数更灵活,不止能做死动作,还可以根据调用时传参数的不同来决定函数内部的执行流程

  • 形参变量
    只能在被调用时才分配内存单元,在调用结束时,即刻释放分配的内存,因此,形参只在函数内部有效。
    函数调用结束返回的主调用函数后则不能再使用该形参变量

  • 实参
    可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在调用时,他们必须有确定的值,以便把这些值传给形参。
    因此预先赋值,输入等办法使参数活的确定值

def founc(x,y):     # 形参
    mult = x*y
    return mult

c = founc(a,b)   #实参
print(c)

默认参数

将变化很小的值设置成默认参数,可以提高效率(比如,统计全国人口登记,国籍,都是中国,就可以设置成默认参数)
默认参数,要写在位置参数后面。

def info(name, age, sex, country='CN'):    # 默认参数
   ''' print students info'''
    print("The Students info:")
    print(name, sex, age, country)     # 函数体


info("zk", 22, 'male')    # 默认参数可以不写
info('stain', 24, 'male', 'English')   # 如果不是默认参数,可以自己更改
info('tanhui', 21, 'feale', 'CN') 

输出信息为:

The Students info:
zk male 22 CN
The Students info:
stain male 24 English
The Students info:
tanhui feale 21 CN

关键参数

传参数的时候,不想按照顺序,就可以用关键参数,只需指定参数名就行(指定参数名的参数就叫关键参数)
关键参数要在位置参数之后

def stu_info(name,age,hobby='playgames',country='cn'):
    print('info of students')
    print('姓名',name)
    print("年龄:",age)
    print("国籍:",country)
    print("爱好:",hobby)

stu_info("zk",hobby='watch TV',age=22,country='CN')

stu_info('zk',hobby='games',22,country='cn')     # 不能这样写,位置参数要在前面
stu_info('zk',22,hobby='games',age=21,country='cn')   # 参数重复

非固定参数-动态参数

  • *args 元组形式
    当你的函数在定义时不确定传多少参数,就要用动态参数
    *若果参数中出现 args,传递的参数就不再是固定的数,传进来的所有参数变成一个元组
def send_msg(msg,*args):    # *args 会把参入的参数变成一个元组  一般都要写在最后,如果不在最后,后面的参数都要写关键参数
   '''给多个用户发送信息'''
    for i in args:
        print('seed msg to->',i)
# 方式一
send_msg('你中奖了','zk','th','mm')
# 方式二
send_msg('你中奖了',*['xiaos','hc','mjh'])   # 直接在列表前加* 可以把列表的元素都传进去,不加会把列表当一个元素传进去。

输出

seed msg to-> zk
seed msg to-> th
seed msg to-> mm
  • **kwargs 字典形式
def func(name, *args, **kwargs):
  ''' *args传入是元组, **kwargs是字典'''  
    print(name, args, kwargs)


func('zk', 22, 'vfx', 'efx', addr='anhui', num=1983232)
# 输出 zk (22, 'vfx', 'efx') {'addr': 'anhui', 'num': 1983232}  
# 如果直接传字典,需要前面加 **
dic = {"stu":'hhc','stu2':'ccz'}

func('th',**dic)  # 输出     th () {'stu': 'hhc', 'stu2': 'ccz'}

函数返回值

函数外部的代码想要获取函数的执行结果,就可以在函数里用 return语句把结果返回

def stu_register(name,age,job):
    print(name,age,job)
    if age > 22:
        return False
    else:
        return True

status = stu_register('zk',23,'vfx')
print(status)
  • return 代表一个函数的结束,如果未在函数中指定return,那么这个函数的返回值为None
  • 返回值可以是任意的数据类型,如果return 返回2个值,返回是元组,如果加[],返回是列表
  • 函数可以有返回值,必须有变量接收,也可以没有返回值,不写,默认返回None
  • return 返回一个值(变量)
  • return 返回多个值,多个值用逗号分开,以元组形式返回。

def num():
    a = 100
    b = ['a','b','c']
    c = {'a':'b','c':'d'}

    # return a   # 返回一个值
    # return a,b,c    # 返回一个元组
    return [a, b, c]  # 返回一个列表
print(num())
posted @ 2019-04-26 19:53  海岛cc  阅读(224)  评论(0编辑  收藏  举报