Python——函数,模块,简单文件读写
函数(function)定义原则:
最大化代码重用,最小化代码冗余,流程符合思维逻辑,少用递归;
函数的定义方法:
def function_name(param_1, param_2):
.....
return output #输出,结束函数
注意:
函数要在使用之前定义
函数的使用方法以print()函数为例
形式参数和实际参数
在函数内定义的变量为本地变量,在函数外无法访问
参数传递:
实际参数通过赋值运算传递给形式参数
注意:如果参数是列表,在函数内可以被修改 (列表可以原位传递)
def add_ab(a,b):
c = a + b
return c
n = add_ab(1.5,3)
s = add_ab('mmm','nnn')
print(m)
print(n)
函数返回多个变量:
如果一个函数需要返回多个变量:
函数定义中的return语句后面放置多个变量,以逗号分隔
该函数返回一个多元组
调用函数时,等号左端放置相应数量的变量名,以逗号分隔
也可以用一个变量承载函数返回的多元组,然后在拆分(元组,有序的小集合,不可原地修改)
def max_min(a,b):
if a > b:
return a,b
else:
return b,a
m1,n1 = max_min(1,2)
m2,n2 = max_min(2,1)
print('m1:', m1)
print('n1:', n1)
print('m2:', m2)
print('n2:', n2)
声明全局变量:
函数内的变量前加上关键字global以声明全局变量
全局变量是模块级的
不要滥用全局变量,尤其是在Python中
使用全局变量不符合黑箱假设,不利于代码重用
函数是一个对象:
当我们使用def定义一个函数时,我们定义了一个函数类型的对象。
将函数定义放在if else语句之中,可以分情况来定义不同的函数体
函数名可以当作变量来进行赋值操作
函数可以被重新定义
函数可以有属性
函数嵌套:
如果函数A中需要调用函数B:
在A第一次执行之前,B必须被定义
不一定要在A定义之前就定义B
默认参数
def f(a, b = 2 , c = 3)
lambda函数:lambda语句创建一个无名函数,并将该函数作为返回值
只能包含一个表达式,连if这样的结构都不支持
def语句中的函数名是预先设定好的,lambda语句则可以把产生的函数赋给任意一个变量名
lambda产生的函数也可以不占用变量名
模块:
将一些函数或变量封装在.py文件中,以供调用
比函数更高层次的封装
.py文件的名字就是模块的名字
通过这种封装,可以避免单个.py文件过长
自定义的模块应该放在主程序目录下
模块调用:
import numpy as np
from numpy import arccos
from numpy import * #破坏命名空间,可能会破坏本来命名的和调用模块重名的方法函数
读取文本文件
打开一个文件
input = open(‘file_name’, ‘r’)
读取文件中的内容到一个字符串
content = input.read()
关闭文件
input.close()
Python——函数,模块,简单文件读写的更多相关文章
- [Python]-pandas模块-CSV文件读写
Pandas 即Python Data Analysis Library,是为了解决数据分析而创建的第三方工具,它不仅提供了丰富的数据模型,而且支持多种文件格式处理,包括CSV.HDF5.HTML 等 ...
- Python CSV模块处理文件读写
下面是一个简单的csv文件 Title,Release Date,Director And Now For Something Completely Different,1971,Ian MacNau ...
- python shutil模块简单介绍
python shutil模块简单介绍 简介 shutil模块提供了大量的文件的高级操作.特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作. shutil 模块方法: copy(src, ...
- python linecache模块读取文件的方法
转自: python linecache模块读取文件 在Python中,有个好用的模块linecache,该模块允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行. l ...
- python之模块filecmp(文件/目录比较)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之模块filecmp(文件/目录比较) #用于比较文件及文件夹的内容.他是轻量级的工具.可以做一 ...
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- python函数模块
python函数模块 学习完本篇,你将会深入掌握 函数相关知识 1.函数定义 2.函数如何调用 3.递归函数以及匿名函数使用 模块相关知识 1.模块如何导入调用 2.函数调用顺序 函数定义 函数代码块 ...
- 『无为则无心』Python函数 — 28、Python函数的简单应用
目录 1.函数嵌套调用 2.Python函数的简单应用 (1)打印线条 (2)函数计算 (3)打印图形 3.函数的说明文档 (1)函数的说明文档的作用 (2)函数说明文档的语法 (3)查看函数的说明文 ...
- python内置函数,lambda表达式,文件读写
Lambda表达式: lambda是个匿名函数,自动加return返回 a={ 6:2,8:0, 1:4,-5:6,99:11,4:22} print(sorted(a.items()))#按key排 ...
- python自动化--语言基础四模块、文件读写、异常
模块1.什么是模块?可以理解为一个py文件其实就是一个模块.比如xiami.py就是一个模块,想引入使用就在代码里写import xiami即可2.模块首先从当前目录查询,如果没有再按path顺序逐一 ...
随机推荐
- JS中的事件委托(事件代理)
一步一步来说说事件委托(或者有的资料叫事件代理) js中事件冒泡我们知道,子元素身上的事件会冒泡到父元素身上. 事件代理就是,本来加在子元素身上的事件,加在了其父级身上. 那就产生了问题:父级那么多子 ...
- spring整合quartz异常:org.quartz.JobPersistenceException: Couldn't clean volatile data: Unknown column 'IS_VOLATILE' in 'where clause'
自己的SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一.后来就研究quartz,准备整合到项目中.遇到了异常,异常内容如下: [201 ...
- 2019-04-04 Mybatis学习知识点
1. 比较#和$的区别 #是占位符?,$是字符串拼接.因此使用$的时候,如果参数是字符串类型,那么要使用引号 尽量使用#而不是$ 当参数表示表名或列名的时候,只能使用$ 2. 多参数时候 配置文件中使 ...
- 基于Redis实现分布式锁
分布式锁具有的特性: 1.排他性: 文件系统: 数据库:主键 唯一约束 for update 性能较差,容易出现单点故障 锁没有失效时间,容易死锁 缓存Redis:setnx 实现复杂: 存在死锁(或 ...
- Mysql七种 JOIN 连接
内连接 SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key = B.Key 左外连接 SELECT <se ...
- 不用代码就能实现get与post
这些天在测试各种API,每次都敲代码实现,就显得有点浪费时间了 为了节约时间,提高效率,我想着收集一些可以只用 -命令行- 或者是 -浏览器- 就能够实现的技巧 在这里,我简单测试三种工具来实现 ge ...
- CF集萃2
CF1155D - Beautiful Array 题意:给你一个序列和x,你可以选择任意一个子串(可以为空)乘上x,使得得到的序列最大子串和最大.求这个最大值.30w,2s. 解:设fi,0/1/2 ...
- 关于ajax的与后台Controller的交互 后台拿不到值
话不多说 上代码 这是前段js的代码 传的两个参数 cLassid 和 userid $.ajax({ type:"post", url:"../ ...
- 使用Redis实现实时排行榜
游戏中存在各种各样的排行榜,比如玩家的等级排名.分数排名等.玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标. 一个典型的游戏排行榜包 ...
- .NET框架 - NETCORE + API + EF + MYSQL
.NET框架 - NETCORE + API + EFCORE + MYSQL 1. 新建项目: 本文中使用 框架 .netcore2.2 . 2. 生成项目框架 3 安装MYSQL插件 点击“工具” ...