第一章 Python基础入门之函数与函数式编程

系列文章目录

第一章 Python基础入门之Hello World
第一章 Python基础入门之变量与数据类型
第一章 Python基础入门之ASCII(字符编码和二进制)
第一章 Python基础入门之单多行的注释和输出
第一章 Python基础入门之INPUT用户输入
第一章 Python基础入门之IF ELSE条件判断
第一章 Python基础入门之While循环与For循环
第一章 Python基础入门之什么是模块(库)
第一章 Python基础入门之什么是.pyc
第一章 Python基础入门之数据类型
第一章 Python基础入门之Python3数据类型中的bytes和str的区别
第一章 Python基础入门之文件读与写详解
第一章 Python基础入门之文件修改详解
第一章 Python基础入门之文件的with语句



前言

Python系列学习


一、相关内容

3种编程方法:

  • 面向对象---->核心内容是:类------>class
  • 面向过程---->核心内容是:过程------>def
  • 函数式编程----->核心内容是:函数------>def

函数的定义:

  • 初中教学时的函数定义是:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一的值与其对应,那么我们就把x称之为自变量,把y称之为因变量,y是x的函数,自变量x的取值范围叫做这个函数的定义域。
  • 编程语言中函数的定义是:函数是逻辑结构化和过程化的一种编程方法。
# 1、python中函数定义方法:
def test(x):           # def代表函数的关键字;test代表函数名;()代表括号内可定义形参
    '这是函数定义'      # ''指文档描述(非必要,但是强烈建议为你的函数添加描述信息)
    x += 1             # 泛指代码块或程序处理逻辑
    return x           # 定义返回值

# 2、面向过程与函数式编程的区别?(定义过程和定义函数的区别?)
# # (1)函数案例:
def function1():
    '定义函数的案例'
    print('定义函数')
    return 0

# (2)过程案例:
def function2():
    '定义过程的案例'
    print('定义过程')
    
# (3)分别调用函数和过程,并输出:
a = function1()
b = function2()
print('函数返回的值是:%s' % a)
print('过程返回的值是:%s' % b)

所以,函数和过程的区别在于函数有return,而过程没有return。在python中,函数和过程没有很明确的界限,因为过程虽然没有return,但是pyton隐形的给过程返回了None。

为什么要使用函数?

通过如下三个示例进行详细说明。

# 1、示例1
# 假设我们编写好了一个逻辑(功能),用未以追加的方式写日志:
with open('a.txt', 'ab') as f:
    f.write('end action')

# 现在有3个函数,每个函数在处理完自己的逻辑后,都需要调用上面的逻辑,那么唯一的方法就是:拷贝3次这段逻辑。
def test1():
    print('test1 starting action...')
    with open('a.txt', 'ab') as f:
        f.write('end action')

def test2():
    print('test2 starting action...')
    with open('a.txt', 'ab') as f:
        f.write('end action')

def test3():
    print('test3 starting action...')
    with open('a.txt', 'ab') as f:
        f.write('end action')
# 那么假设有N个函数,你就拷贝N次吗?--------------显然不可能的!!!

# 2、示例2:
# 把示例1进行优化,对写日志进行函数封装
def logger_test():
    with open('a.txt', 'ab') as f:
        f.write('end action')

# 在函数再调用函数
def test1():
    print('test1 starting action...')
    logger_test()

def test2():
    print('test2 starting action...')
    logger_test()

def test3():
    print('test3 starting action...')
    logger_test()

# 3、示例3:
# 示例1需求增加:为日志加上时间,对写日志进行函数封装
import time                                       #使用时间库
                                                  
def logger_test():
    time_format = '%Y-%m-%d %X'                   #定义时间格式,‘年月日小时’
    time_current = time.strftime(time_format)     #指明按照定义的时间格式显示时间
    with open('a.txt', 'a+') as f:
        f.write('%s end action\n' %time_current)

# 在函数再调用函数
def test1():
    print('test1 starting action...')
    logger_test()

def test2():
    print('test2 starting action...')
    logger_test()

def test3():
    print('test3 starting action...')
    logger_test()

# 最终进行调用输出
test1()
test2()
test3()

所以,为什么要用函数?使用了函数有什么好处?在示例1和示例2可以看出函数具有“代码重用”的好处。在例2和例3又可以看出函数具有“保持一致性”、“可扩展性”的好处。

  • 代码重用
  • 保持一致性
  • 可扩展性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值