zoukankan      html  css  js  c++  java
  • 函数的组成部分及函数参数

    一、函数

    1、概念

    重复利用的工具

    完成特定功能的代码块,函数就是存放代码块的容器

    2、定义函数的语法

    def   函数名(参数1 ,参数2,参数3,......)

           函数体

           return

    注:函数返回值也称之为函数值,就是函数执行的结果

           可以用变量接收/可以直接打印/可以直接使用

    3、函数的四大组成部分

    函数名:使用函数的依据

    函数体:完成功能的具体代码块

    函数返回值:功能完成返回的信息

    参数:实现功能需要的参数

    4、使用函数

    函数名()

    注:先定义后使用

    二、函数的分类

    1、从函数体进行分类

      空函数:项目之初,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充

    def computed():
    pass
    非空函数:用函数体
    def add_num(n1, n2):

    return n1 + n2

    print(a)
    a = 10

    computed()

    res = add_num(10, 20)
    print(res)

    a = 50
    b = 100
    print(add_num(a, b))

    2、从参数列表进行分类

    无参函数:函数体运行不需要外界提供参数

    def print_msg():
    print("欢迎大家来到老男孩教育,奉献你的余生!!!")


    print_msg()

    函数体运行需要外界提供参数
    def print_school_msg(p1, p2):
    print("欢迎%s和%s领导莅临老男孩教育,敞开你的腰包!!!" % (p1, p2))


    p1 = input("输入一号领导名:")
    p2 = input("输入二号领导名:")
    print_school_msg(p1, p2)

    有参函数:函数体运行需要外界提供参数

    def print_school_msg(p1, p2):
    print("欢迎%s和%s领导莅临老男孩教育,敞开你的腰包!!!" % (p1, p2))


    p1 = input("输入一号领导名:")
    p2 = input("输入二号领导名:")
    print_school_msg(p1, p2)

    3、从返回值进行分类

    没有return的函数:默认在函数最后return  None

    def fn1():
    print('fn1 run!!!')
    res = fn1()
    print('没有return关键字的返回值:%s' % res) # None

    空return

    def fn2():
    print('fn2 run!!!')
    # return
    # return None

    res = fn2()
    print('空return关键字的返回值:%s' % res) # None
    无return函数与空return函数的区别
    空return:可以根据具体情况主动退出函数(像break结束循环一样)

    值返回

    # 一个值的返回
    def add_num(n1, n2):
    return n1 + n2
    print(add_num(10, 15))

    def computed(n1, n2):
    # 返回四则运算的结果
    r1 = n1 + n2
    r2 = n1 - n2
    r3 = n1 / n2
    r4 = n1 * n2
    return [r1, r2, r3, r4]

    a, b, c, d = computed(50, 25)
    print(a, b, c, d)


    # 多个值的返回: 本质就是返回装有多个值的元组
    def computed_sup(n1, n2):
    # 返回四则运算的结果
    r1 = n1 + n2
    r2 = n1 - n2
    r3 = n1 // n2
    r4 = n1 ** n2
    return r1, r2, r3, r4

    a, b, c, d = computed_sup(50, 25)
    print(a, b, c, d)

    res = computed_sup(50, 25) # 得到的是装有所有结果的元组
    print(res)

    三、函数的嵌套调用

    函数的嵌套调用:在一个函数体重调用另一个函数

    # 在解释过程中,不执行函数体,在函数被调用时,函数体才被执行
    def fn1():
    print('fn1 run')
    fn2()

    def fn2():
    print('fn2 run')
    fn3()

    def fn3():
    print('fn3 run')

    # 注:在fn1中调用了fn2,所以调用fn1的逻辑应该在fn2定义之后
    fn1()


    # 案例:用函数实现获取两个数的最大值
    def max_2(n1, n2):
    if n1 > n2:
    return n1
    return n2

    print(max_2(200, 30))

    获取三个数的最大值
    普通法
    def max_3(n1, n2, n3):
    if n1 > n2 and n1 > n3:
    return n1
    if n2 > n1 and n2 > n3:
    return n2
    return n3
    嵌套
    def max_3(n1, n2, n3):
    m2 = max_2(n1, n2)
    return max_2(m2, n3)

    print(max_3(300, 30, 30))

    四个数
    def max_4(n1, n2, n3, n4):
    m2 = max_2(n1, n2)
    return max_3(m2, n3, n4)
    print(max_4(10,30,20,0))

    四、指定文件名的文件复制

    def copy_img(target_img):
    with open('001.jpg', 'rb') as r, open(target_img, 'wb') as w:
    for line in r:
    w.write(line)


    copy_img('888.jpg')
    copy_img('999.jpg')

    def copy_file(source, target):
    '''
    :param source: 被复制的文件
    :param target: 复制得到的文件
    :return:
    '''
    with open(source, 'rb') as r, open(target, 'wb') as w:
    for line in r:
    w.write(line)

    copy_file('cmd.txt', 'aaa.txt')
    copy_file('temp.txt', 'ttt.txt')
  • 相关阅读:
    POJ 1611 The Suspects
    POJ 2001 Shortest Prefixes(字典树)
    HDU 1251 统计难题(字典树 裸题 链表做法)
    G++ C++之区别
    PAT 乙级 1013. 数素数 (20)
    PAT 乙级 1012. 数字分类 (20)
    PAT 乙级 1009. 说反话 (20)
    PAT 乙级 1008. 数组元素循环右移问题 (20)
    HDU 6063 17多校3 RXD and math(暴力打表题)
    HDU 6066 17多校3 RXD's date(超水题)
  • 原文地址:https://www.cnblogs.com/yangyinyin/p/10632619.html
Copyright © 2011-2022 走看看