天天看点

Python之路【3】:Python基础(二) 函数的理解

面向过程:根据业务逻辑从上到下写垒代码

函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可

函数作用是你的程序有良好的扩展性、复用性。

同样的功能要是用3次以上的话就建议使用函数。

标注:不能死记,

函数可以理解为一个一个的功能块,你把一个大的功能拆分成一块一块的,用某项功能的时候就去调用某个功能块即可!

函数可以理解为:乐高积木,给你一块一块的,你可以用这些积木块组成你想要的任何,功能!

函数可以调用函数!主函数的作用就是把函数进行串联、调用!函数本身是不能自己执行的如果你不调用就永不执行!

一、背景

在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下

上面的代码是就面向过程的编程,但是如果报警多了的话成百的代码需要添加如何操作呢?复制粘贴那会死人的!在看下下面的代码:

第二次必然比第一次的重用性和可读性要好,其实这就是函数式编程和面向过程编程的区别:

面向过程:更具需求一行一行垒代码!逻辑乱、并切代码重复、不易修改重用性差!

面向对象:对函数进行分类和封装,让开发“更快更好更强...”

二、函数式编程

函数式编程最重要的是增强代码的重用性和可读性:

函数的定义主要有如下要点:

def:表示函数的关键字

函数名:函数的名称,日后根据函数名调用函数

函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...

参数:为函数体提供数据

返回值:当函数执行完毕后,可以给调用者返回数据。

1、返回值

函数是一个功能块,该功能到底执行成功与否,需要通过返回值来告知调用者。

2、参数

为什么要有参数?看下下面的例子:

如果不定义参数,用函数的话:(每个有相同功能的都写个函数,说好的代码简化呢?

使用函数:(代码明显少了很多,把重复的内用改为参数调用!)

函数的有三中不同的参数:

普通参数

默认参数

动态参数

普通参数:

但是普通参数有个问题!你在定义参数的时候定义了几个参数,你在调用的时候必须给他几个参数否则就报错!

默认参数:

在你没有给他指定参数的时候他就会使用默认的参数!

动态参数:

动态参数顾名思义就是可以动态的去扩展函数参数的数量!

例子:1 (多个单个变量,整合成元组)

例子:2(整合为字典变量)

例子:3(整合了*args,**args)

扩展:发邮件实例

import

smtplib

Python之路【3】:Python基础(二) 函数的理解

内置函数:(就是python把各个模块中常用的一些方法给拿出来方便使用)

常用的记住之后,要知道怎么去查:

看下面的例子:

在看下面的例子:

总结:函数的作用域就是在函数里定义的变量不能被外面使用!但是外部全局定义的全局变量在函数内是可以使用的。

举个例子来说:你在房子里可以看到屋内的东西和房子歪的东西,但是你在房子外面就只能看到房子外的东西不能看到房子内的东西!

原因防止在函数调用的时候防止变量冲突!

问题:我在外面定义的全局变量在函数内可以改他吗?  #看下面的例子:

但我就是想在函数里改变全局变量是否可以呢?可以!

return 一般写在函数的末尾,一般你想看函数的执行结果!然后判断后面的程序。看下面的例子

操作文件时,一般需要经历如下步骤:

打开文件

操作文件

一、打开文件

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

打开文件的模式有:

r,只读模式(默认)。

w,只写模式。【不可读;不存在则创建;存在则删除内容;】

a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

r+,可读写文件。【可读;可写;可追加】

w+,无意义

a+,同a

"u"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

ru

r+u

"b"表示处理二进制文件(如:ftp发送上传iso镜像文件,linux可忽略,windows处理二进制文件时需标注)

rb

wb

ab

二、操作

三、with方法

 为了避免打开文件后忘记关闭,可以通过管理上下文,即:(建议使用此方法打开文件)

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

例子:比如要修改nginx.conf 文件然后还的回滚怎么做?