本篇内容

  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. C++各大有名科学计算库(转)

    在 C++中,库的地位是非常高的.C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论.现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级 ...

  2. 浅谈KD-Tree

    前言 \(KD-Tree\)是一个十分神奇的东西,其实本质上类似于一个\(K\)维的二叉搜索树. 核心思想 \(KD-Tree\)的核心思想与\(BST\)是差不多的(插入等操作也都基本上一样). 唯 ...

  3. SEO人士一定要了解的搜索引擎惩罚原则

       SEO人士一定要了解的搜索引擎惩罚原则 SEO 的人一般都知道SEO分为白帽,黑帽,甚至还有灰帽.简单说,如果你熟读过谷歌网站质量指南,就可以了解,符合搜索引擎质量规范并且符合用户体验的SEO ...

  4. 支持向量机: Maximum Margin Classifier

    支持向量机即 Support Vector Machine,简称 SVM .我最开始听说这头机器的名号的时候,一种神秘感就油然而生,似乎把 Support 这么一个具体的动作和 Vector 这么一个 ...

  5. Nginx学习记录(二)

    1. 什么是反向代理 正向代理 反向代理: 反向代理服务器决定哪台服务器提供服务. 返回代理服务器不提供服务器.也是请求的转发. 反向代理(Reverse Proxy)方式是指以代理服务器来接受Int ...

  6. HH的项链题解(离线思想+链表+树状数组)

    本人第一篇博客重磅推出!!! 希望各位朋友以后多多捧场也多给写意见(我个人喜欢把题解写得啰嗦一点,因为这样方便理解,各位巨佬勿喷) 来讲一道提高+/省选-的骚题:HH的项链(这个HH你理解成皇后呵呵哈 ...

  7. jQuery支持链式编程,一句话实现左侧table页+常用筛选器总结

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. 第2 章Python 语言基础

    必背必记 1.转义字符   Python 中的字符串还支持转义字符.所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义. \ 续行符 \n 换行符 \0 空 \t 水平制表符,用于横向跳到下一制表 ...

  9. 五、Linux 远程登录

    Linux 远程登录 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ss ...

  10. javascript简易日历制作

    学习记录 01.练习数组的用法 02.理解this.index的用法 03.绑定事件深入练习理解 html代码 <div id="date"> <ul id=&q ...