本篇内容

  1. 文件处理补充

  2. 函数基本语法及特性

  3. 参数

  4. 返回值

  5. 嵌套函数

一、文件处理补充

1、文件操作的内置方法

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei with open("test.txt","r+",encoding="utf-8") as file:
file.write("\naaaaaa") #换行写入aaaaaa
print(file.readline()) #以字符串的方式读一行test.txt的内容
print(file.read()) #以字符串的方式读光标以后的test.txt的所有内容
file.seek(0) #将光标回到开头处
file.flush() #刷新内存中的内容到test.txt中
print(file.readlines()) #以列表的方式读光标以后的test.txt的所有内容
print(file.tell()) #打印光标在第一个字符
file.close() #关闭test.txt在内存的打开


2、文本操作a模式

文件以a模式打开,光标会默认在文本的末尾。a模式只可以追加,不可读。而a+模式既可以追加,又可以读。当文件不存在的时候,会创建文件,并追加写入。

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei with open("test.txt","a",encoding="utf-8") as file:
file.write("test")


3、文件操作b模式

文件以b模式打开,默认字符是以bytes的字符集打开的,无需自己定义以什么字符集打开。

以下是模拟linux的tail -f命令的代码:

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei import time, sys
def tail_file(parameter,f_file):
with open(f_file,"rb") as f:
f.seek(0,2)
while True:
line = f.readline()
if line:
print(line.decode("utf-8"),end="")
else:
time.sleep(1) if __name__ == "__main__":
tail_file(sys.argv[1], sys.argv[2])

b模式还可以完成图片或者视频的复制功能。

以下是模拟linux的copy命令的代码:

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei import sys def copy_file(old_file, new_file):
with open(old_file,"rb") as f_read, open(new_file,"wb") as f_write:
for line in f_read:
f_write.write(line) if __name__ == "__main__":
copy_file(sys.argv[1], sys.argv[2])

二、函数基本语法及特性

函数是什么?

函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。

定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可

特性:

  1. 减少重复代码

  2. 使程序变的可扩展

  3. 使程序变得易维护

1.语法定义

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test():
print("Hello,World") test()

2.函数即变量

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def foo():
print("foo")
bar() def bar():
print("bar") foo() #函数可以正常运行,说明函数是先定义,再调用。这一点与变量相同。

3.函数还可以传递参数

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei a = 1
b = 10
c = a + b
print(c) def test(x, y):
z = x + y
return z res = test(x=1,y=10)
print(res)

三、参数

1.形参与实参

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

2.位置参数数与关键字参数

注意:关键字参数不能在位置参数的前面

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def user_info(name, age, sex):
print(name)
print(age)
print(sex) user_info("yanglei", 18, "male") #位置实参
user_info(name="yanglei", age=18, sex="male") #关键字实参
user_info("yanglei", 18, sex="male") #位置实参与关键字实参混合
user_info("yanglei", age=18, sex="male") #位置实参与关键字实参混合

3.非固定参数

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数。

args

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test(x,y,*args):
print(x)
print(y)
print(args) test(1,2,3,4,5,6,7)

kwargs

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test(x,y,**kwargs):
print(x)
print(y)
print(kwargs) test(x=1,y=2,z=3,a=4,j=5,g=6,l=7)

四、返回值

要想获取函数的执行结果,就可以用return语句把结果返回。

注意:

  1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为 return 语句代表着函数的结束

  2. 如果未在函数中指定return,那这个函数的返回值为None

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test():
print("test")
return
print("test")
print("test")
print("test") test() #return后面的三个打印test不会被执行
#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test():
print("test")
return res = test()
print(res) #return会默认返回None
#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test():
print("test")
return test1 def test1():
print("test1") res = test()
res() #return可以返回你定义的值,包括函数也可以被返回

五、嵌套函数

嵌套函数,顾名思义就是函数里面套函数。

#!/usr/bin/env pyhon
#encoding: utf-8
#auth: yanglei def test():
print("test")
def test1():
print("test1")
test1() test()

第三篇:python基础_3的更多相关文章

  1. 【0728 | 预习】第三篇 Python基础

    第三篇 Python基础预习 Part 1 变量 一.什么是变量? 二.为什么要有变量? 三.定义变量 四.变量的组成 五.变量名的命名规范 六.变量名的两种风格 Part 2 常量 Part 3 P ...

  2. 前端第三篇---前端基础之JavaScript

    前端第三篇---前端基础之JavaScript 一.JavaScript概述 二.JavaScript的基础 三.词法分析 四.JavaScript的内置对象和方法 五.BOM对象 六.DOM对象 七 ...

  3. 进击python第三篇:基础

    基础拾遗 序列解包 例: >>>x,y,z=1,2,3 >>>print x,y,z 1 2 3 交换变量也是没问题 >>>x,y=y,x > ...

  4. 第一篇:python基础

    python基础   python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...

  5. Python笔记_第三篇_面向对象_3.重载(overloading)和重写(overriding)

    1. 重载: overloading:就是将函数重新定义一遍. 1.1 __str__( )和__repr__( )的重载: 格式: __str__( ):在调用print打印对象时自动调用,是给用户 ...

  6. 【Python之路】第七篇--Python基础之面向对象及相关

    面向对象基础 基础内容介绍详见一下两篇博文: 面向对象初级篇 面向对象进阶篇 其他相关 一.isinstance(obj, cls) 检查obj是否是类 cls 的对象 class Foo(objec ...

  7. 【Python之路】第九篇--Python基础之线程、进程和协程

    进程与线程之间的关系 线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除.线程可与属于同一进程的其它线程共享进程所拥有的全 ...

  8. 【Python之路】第八篇--Python基础之网络编程

    Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  9. 【Python之路】第六篇--Python基础之模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

随机推荐

  1. java生成excel文档

    要做一个后台自动化,要先预先生成一份文档,以下内容生成了文档 首先下载jxl.jar包,下载地址:http://download.csdn.net/detail/prstaxy/4469935 1.生 ...

  2. 2017.12.22 Java序列化中你不知道的事(一)

    Java 序列化简介 Java 对象序列化是 JDK 1.1 中引入的一组开创性特性之一,用于作为一种将 Java 对象的状态转换为字节数组,以便存储或传输的机制,以后,仍可以将字节数组转换回 Jav ...

  3. Flutter 入坑(1):flutter 环境搭建,window版本

    下载安装JAVA环境 1. 既然要做原生应用了,而且是基于Android的,那还是需要我们安装一下JAVA的环境的,我比一般得到一个新系统后首先做的就是这一步.    https://www.orac ...

  4. head与body(新手向)

    网页文档包含了页头(head)与主体(body) 页头 -是对该网页文档进行描绘的主体信息. -至少含有title与meta. meta描述网页的特征,比如字符编码,平时广泛用的utf-8.且meta ...

  5. JS MarcoTasks MicroTasks

    JS MarcoTasks MicroTasks 在JS的event loop中,有两种任务队列microtasks和macrotasks microtasks process.nextTick Pr ...

  6. Django 模型与 Mysql 数据类型对应

    Django 1.11.9 文件路径:site-packages\django\db\backends\mysql\base.py–class DatabaseWrapper _data_types ...

  7. Mysql关闭和修改密码

    数据库的关闭方法: 1.优雅的关闭数据库的方法:mysqladmin -uroot -p123456 shutdown 2.脚本关闭:/etc/init.d/mysqld stop 3.使用kill信 ...

  8. thinkphp-PHP实现Excel导入 导出功能

    Excel导出 //功能:导出题库模板 public function get_contract_ex() { ob_get_clean(); header("Content-Typ:tex ...

  9. 一个手机号可以注册绑定5个百度网盘,永久2T

    效果: 一个手机号可以注册绑定5个百度网盘,得永久2T硬盘 手机号只能做为其中一个网盘的登陆账号,其它四个用绑定qq登陆(微信应该也可以). 条件: 2个手机号:A(用来绑定百度网盘),B(用来申请网 ...

  10. 解析XML格式数据

    学习解析XML格式的数据前,搭建一个简单的web服务器,在这个服务器上提供xml文本用于练习. 一.搭建Apache服务器 在Apache官网下载编译好的服务器程序,安装.对于Windows来说127 ...