Python语法第7讲:函数

来源:互联网 发布:崛起网络f18团平台图片 编辑:程序博客网 时间:2024/05/17 12:48

Python中的函数类似于Java中的方法,函数的作用是使得代码更加的粒子化,在函数中Coder可以封装自己的部分业务逻辑

1、函数

1.1、结构

def 函数名(参数列表):    ...def 函数名(参数列表): #定义带返回值的函数    ...    return 返回值
1.2、说明

在Python中用def关键字定义函数,函数名称随意,但是建议函数的命名要可以见名之意;当函数需要传递参数的时候,多个参数用半角逗号隔开;函数可以有返回值也可以没有返回值,函数的返回值需要使用return关键字来返回

1.3、示例

def myFunction(): #定义无参函数    print("这是无参函数:hello world")def info(name, age): #定义有参函数    return "这是有参函数:I'm %s %s years old" %(name, age) #返回字符串def info1(name="HanMeimei", age=36):  #参数可以设置默认值    print("这是默认值参数函数:I'm %s %s years old" %(name, age))    #调用函数myFunction()result = info("Lilei", 18) #定义一个变量接收函数的返回值print(result)result = info(name="Lilei", age=18) #函数的调用,用关键字索引参数print(result)info1() #调用默认值参数函数,参数可以不传递,函数会传递参数的默认值

运行结果:


2、定义函数文档

类似与Java中方法的文档注释

def hello(): #函数的声明    '这是我的第一个函数' #定义函数文档    print("hello world")print(hello.__doc__) #打印函数文档,双下划线help(hello) #可以通过help函数打印函数文档
运行结果:



3、定义参数可变的函数

参数可变指的是参数的个数不确定

def myFunction1(*params): #定义可变参数的函数    print("参数的长度是:%s" %len(params))    for item in params:        print(item)myFunction1("hello", "world") #函数的调用
运行结果:

4、在函数中修改全局变量的值

在Python中无法再函数中修改全局变量的值,当函数中的变量名称与全局变量名称一致时,系统会认为函数中的变量是Coder定义的同名局部变量,所以当如果需要在函数中修改全局变量的值时,需要使用global关键字声明

#在函数中修改全局变量的值count = 5;def modifyCount():     #count = 10 #不会修改全局变量count的值,因为函数中的count变量编译器会认为是局部变量    global count #首先让编译器知道当前的变量是全局变量的引用    count = 10 #修改局部变量的值    modifyCount() #调用函数print("修改全局变量的值:%s" %count)
运行结果:


5、内嵌函数

5.1、内嵌函数

内嵌函数表示在函数中声明的函数,内嵌函数的作用域是外部函数,也就是说,内嵌函数在外部函数之外是无法访问的

#内嵌函数def fun1():    print("fun1被调用")    def fun2():        print("fun2被调用")fun1()#fun2() #程序会报错,原因是fun2函数的作用域仅在fun1中好用
运行结果:

5.2、内嵌函数之闭包

内部函数引用外部函数的变量,称之为闭包

#内嵌函数,闭包def fun3(x):    def fun4(y): #闭包,内部函数引用外部函数的变量称之为闭包        return x+y    return fun4result = fun3(5)(6) #函数调用print(result)
运行结果:

5.3、闭包函数修改外部函数的值

在闭包函数中,外部函数中的变量相当于全局变量

#内嵌函数,闭包,修改外部函数的值def fun5(x):    def fun6(): #闭包,内部函数引用外部函数的变量称之为闭包        #x = x * x #直接修改外部函数中的变量的值是无效的        nonlocal x        x = x * x        return x    return fun6result = fun5(5)()print(result)
运行结果:

6、匿名函数

#匿名函数fun = lambda x, y : x+y#相当于#def fun(x, y):#    return x + yresult = fun(5, 6)print(result)
运行结果:


7、内置函数

7.1、filter函数

filter函数的作用是过滤函数返回值为false的函数

#内置函数filter,实现输出0-10中所有偶数的需求def ou(x):    if x%2 == 0: #能被2整除的数都是偶数        return Truefil = filter(ou, range(0, 10)) #定义一个filter,过滤ou函数所有为true的值,range函数每次生成的值都传递给ou函数的x参数result = list(fil)print("0-10之间所有的偶数是:")for item in result:    print(item, end="\t")
运行结果:


7.2、map函数

map函数的作用是用于映射,将值映射到函数的参数

#内置函数map,用于映射def add(x):    return x + 10arr = map(add, range(0, 10))print("0-10之间所有的数与10的和是:")for item in arr:    print(item, end="\t")
运行结果:



综合案例

需求说明:

商品出厂前都会给商品一个唯一的序列号,要求声明一个函数makeSN()生成一个6位数的随机序列号,并且输出到控制台

需求分解:

  • 1、声明一个无参函数makeSN(),函数返回值为字符串型,作用是生成序列号
  • 2、导入随机数模块random
  • 3、定义一个循环,循环6次
  • 4、每一次循环获得一个0-9的随机数,并且拼接在序列号的末尾
  • 5、调用方法输出到控制台

实现:

import random #导入random对象def makeSN(): #生成序列号的函数    num = ""    for i in range(0, 6, 1):        x = random.randint(0, 9) #生成一个0-9的随机数        num += str(x)    return numsn = makeSN()print("随机生成的6位产品序列号是:%s" %sn)
运行结果:











原创粉丝点击