本篇内容

  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. World Wind Java开发之十二——加载粗制三维模型(ExtrudedPolygon)(转)

    ww可以根据DLG图批量生成假三维模型,这对于小区等特征相似的建筑物模型的构建是非常有用的.下面来看如何一步步实现假三维模型的加载: 1.Shp文件的制作 首先在arcmap下数字化几个建筑物,并新建 ...

  2. 【BZOJ2427】[HAOI2010] 软件安装(缩点+树形DP)

    点此看题面 大致题意: 有\(N\)个软件,每个软件有至多一个依赖以及一个所占空间大小\(W_i\),只有当一个软件的直接依赖和所有的间接依赖都安装了,它才能正常工作并造成\(V_i\)的价值.求在容 ...

  3. Shell重启Tomcat脚本

    #!/bin/bash echo -e "\n\n\n" #force kill flag,if equal [f] to force kill all flag="He ...

  4. CentOS替换系统自带JDK

    1.解压jdk安装包到/opt 下 /opt/jdk1.8.0_181 2.编辑/etc/profile, 增加如下内容 export JAVA_HOME=/opt/jdk1.8.0_181expor ...

  5. Jmeter命令行参数

    一.在linux中,使用非gui的方式执行jmeter.若需更改参数,必须先编辑jmx文件,找到对应的变量进行修改,比较麻烦.因此,可以参数化一些常用的变量,直接在Jmeter命令行进行设置 二.参数 ...

  6. 【转帖】Linux mount 域控权限的共享目录

    https://www.linuxidc.com/Linux/2012-09/71388.htm 之前一直以为没法 映射 home 域的内容 其实还有一个地方.. 注意 空格的话 需要用 \ 进行转移 ...

  7. vue-cli npm run build 打包问题 webpack@3.6

    1, vue-router 路由 有两个模式 (mode) hash (默认模式) 使用URL来模拟一个完整的URL 但是没个URL都会带上 "#/'' 支持所有浏览器 这个模式使用 red ...

  8. JSP出现"属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义"的解决方法

    写JSP时出现属性值[request.getParameter("myMessage")]引用["],在值内使用时必须被转义. 源代码: <jsp:setPrope ...

  9. configParser模块详谈

    前言 使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是configParser configPars ...

  10. Bomb HDU - 3555 (数位DP)

    Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...