本篇内容

  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. 在RichTextBox控件中替换文本文字

    实现效果: 知识运用: RichTextBox控件的SelectedText属性 实现代码: private void button1_Click(object sender, EventArgs e ...

  2. 2018.6.7. 云服务器Centos系统使用yum或者rpm安装包时出现问题,安装时报出错误:

    当我向终端输入 sudo yum groupinstall chinese-support 语言安装包的时候显示下面的错误 error: rpmdb: BDB0113 Thread/process 3 ...

  3. python_6_if

    _username='qi' _password='abc123' username=input("username:") password=input('password:') ...

  4. CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第七节

    第七节:使用下一代CUDA硬件,快乐加速度 原文链接 Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多个 ...

  5. vue切换路由时动画

    安装个包 npm i nprogress 直接导入使用 最终的效果就是

  6. cf550D. Regular Bridge(构造)

    题意 给出一个$k$,构造一个无向图,使得每个点的度数为$k$,且存在一个桥 Sol 神仙题 一篇写的非常好的博客:http://www.cnblogs.com/mangoyang/p/9302269 ...

  7. Spring Cloud学习介绍

    最近在学spring cloud, 整理了下 简单知识要求: 1.要了解springboot 2.了解分布式架构 3.了解微服务 4.了解springcloud是做什么的 带着这些,初学者 就至少有个 ...

  8. 快速搭建FTP服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  9. vue.js 图片预览

    Vue.js的图片预览的插件还是不少,但是找了半天还是没找到跟现在项目里能用得很顺手的,其实项目里图片预览功能很简单,点击放大,能双指缩放就可以了.部分vue.js的图片预览库都需要把图片资源单独拿出 ...

  10. 01.VUE学习一

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...