博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 函数基础1 定义、分类与嵌套使用
阅读量:6836 次
发布时间:2019-06-26

本文共 2966 字,大约阅读时间需要 9 分钟。

目录

  • 零、了解函数
  • 一、函数的组成
  • 二、函数的定义
  • 三、函数的使用
  • 四、函数的分类
  • 五、函数的嵌套使用

零、了解函数

1.什么是函数    在程序中函数就是具备某一功能的工具2.为何用函数    为了解决以下问题        1.程序的组织结构不清晰,可读性差        2.代码冗余        3.扩展性差

一、函数的组成

函数是由函数名、函数体、返回值、参数四个部分组成:    函数名:使用该函数的依据    函数体:完成功能的代码块    返回值:功能完成的反馈结果    参数:完成功能需要的条件信息

二、函数的定义

def 函数名(参数1,参数2,...):    '''注释'''    函数体  # 具体逻辑代码    return '返回值'        注意:        1.函数必须原则:先定义,后调用        2.函数名存放的是函数地址

三、函数的使用

def foo(money):    print('农夫山泉:%s元'%money)    print("第一个函数!")    return '函数的返回值'    def foo1():    print("第二个函数!")    return '函数的返回值'3.1 函数名:拿到函数的地址    print(foo)  # 
3.2 函数名():拿到函数的地址,并执行函数中存放的代码块(函数体) foo1() # "第二个函数!"3.3 函数名(参数):执行函数并传入参数 foo(2) >>>农夫山泉:2元 第一个函数! 3.4 函数名():执行完毕后,会得到函数的返回值,返回值就跟普通变量一样 print(foo1()) # "第二个函数! \n 函数的返回值 "
def fn(num):    print('c传入的num值:%s' %num)    return '收到了'res = fn(10)# 控制台会打印:传入的num值:10# res的值为:"收到了"# 注:函数一定要先定义再调用

四、函数的分类

4.1 根据返回值划分

# 空返回    1.没有return 的函数    2.空 return    def fn1():    print("fn1 run!!!  ",end='')res = fn1()print("没有return的关键字的返回值:%s"%res)def fn2():    print("fn2 run!!!   ",end='')    return#   return None#   约等于 不写res = fn2()print("空return关键字的返回值:%s"%res)
# 有值返回    3.return一个值    4.return多个值# 一个值的返回def add_num(n1,n2):    return n1+n2print(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)res = computed_sup(50,25)  # 装有所有的结果print(res)

4.2 从参数列表进行分类

# 无参函数:函数体运行不需要外界体用参数def print_msg():    print("hello world!")print_msg()# 有参函数:函数体运行需要外界体用参数def school_msg(name):    print("%s到此一游!" % name)name = input("名字:")school_msg(name)

五、函数的嵌套调用

5.1 函数嵌套调用定义

在一个函数体中调用另一个函数
def fn1 ():        print("fn1 run")        fn2()        def fn2 ():        print("fn2 run")        fn3()        def fn3 ():        print("fn3 run")# fn1()# 注意执行流程:执行fn1,打印"fn1 run",再调用fn2,打印"fn2 run",# 再调用fn3,打印"fn3 run",再返回fn2,执行完返回fn1,最后结束程序# 注:1. 在解释过程中,不执行函数体,在函数被调用时,函数体才被执行2. 在fn1中调用fn2,所以在调用fn1的逻辑应该在fn2定义之后

5.1 求两个数的最大值

# 案例:用函数实现两个数的最大值def max_2(n1,n2):    if n1 > n2:        return n1    return n2print(max_2(20,30))# 纯判断版:def max_3(n1,n2,n3):    if n1 > n2 and n1 > n3:         return n1    if n2 > n2 and n2 > n3:         return n2    return n3# 调用函数优化版def max_3_2(n1,n2,n3):    m2 = max_2(n1,n2)    return max_2(m2,n2)print(max_3_2(10,15,12))
案例: 指定文件名的复制# 旧版,无函数def copy_img(target_img):    with open('001.jpg','rb') as r,open('target_img','rb') as w:        for line in r :            w.write(line)# 使用函数,改进版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('1.txt','2.txt')

转载于:https://www.cnblogs.com/xt12321/p/10616089.html

你可能感兴趣的文章
策略模式
查看>>
log
查看>>
深入浅出 JQuery (一) 浅析JQuery
查看>>
[暴力]JZOJ 5882 雪人
查看>>
对python选修课的感想
查看>>
第四周进度条
查看>>
http delete 方法传参数遇到java.net.ProtocolException: DELETE does not support writing的问题...
查看>>
列联表(频数表)
查看>>
root@mysqlproxy-Compaq:~# mysql -uhpproxy -p1234 -P4040 -h 192.168.19.110
查看>>
【干货分享】dos命令大全
查看>>
方法名称作为参数传入函数中
查看>>
手动注册maven本地仓库
查看>>
Android onClick 按钮单击事件 四种常用写法
查看>>
C++中清空缓冲区
查看>>
html 空白汉字占位符 
查看>>
Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)
查看>>
VS2010 打开 VS2012 的项目
查看>>
celery定时器以及出错解决方案Celery Received unregistered task of type
查看>>
canvas toDataURL() 方法如何生成部分画布内容的图片
查看>>
Android 多用户模式原理和实现介绍
查看>>