Python全栈开发day5
一、lambda表达式
对于简单的函数,存在一种简便的表示方式,即:lambda表达式
|
1
2
3
|
>>> shaw = lambda x,y:x + y>>> shaw(1,2)3 |
二、python内置函数
http://www.cnblogs.com/opsedu/p/5573512.html
三、文件操作
打开文件--->操作文件--->关闭文件
f.tell() 获取指针位置
f.seek() 调整指针位置
f.flush() 把内存中数据写入到磁盘
f.read() 读取所有的内容,可以加从参数
f.readline() 读取一行数据
f.readlines() 生产一个列表(每行为一个元素)
f.trncate() 截取指定内容(依据指针)
open(文件名,模式,编码)
文件打开模式:
r 只读模式(默认)
w 只写模式(不可读,不存在则创建,存在则清空内容)
x 只写模式(不可读,不存在则创建,存在则报错)
a 追加模式(不可读,不存在则创建,存在则只追加内容)
|
1
2
3
4
5
6
7
|
f = open('passwd.txt')data = f.read()f.close()print(data)C:\Python35\python.exe F:/PyCharm/Python/PY_learn/lianxi.pysam222 |
‘+’表示可以同时读写
r+ 读写(可读:按照指针位置读取,可写:按照指针的位置往后写)
w+ 写读(可读,可写)先清空文件,后来再写(写完指针到最后),然后才可以读
x+ 写读(可读,可写)文件存在,则报错
a+ 写读(可读,可写)文件打开的同时,指针已经移到最后,
|
1
2
3
4
5
6
7
8
|
f = open('passwd.txt','r+')for line in f: # 按行读取,直到文件被读完 print(line)f.close()C:\Python35\python.exe F:/PyCharm/Python/PY_learn/lianxi.pysam 222 |
‘b’表示以字节的方式操作
rb == r+b
wb ==w+b
xb ==x+b
ab ==a+b
|
1
2
3
4
5
6
|
f = open('passwd.txt','rb')data = f.read()f.close()print(data,type(data))C:\Python35\python.exe F:/PyCharm/Python/PY_learn/lianxi.pyb'sam\r\n222\r\n' <class 'bytes'> |
打开文件的另一种方式,不用手工关闭文件(并且支持同时打开两个文件)
|
1
2
3
4
5
6
7
8
9
|
with open('passwd.txt','r+') as f,open('shaw.log','w+') ash: for line in f: h.write(line) h.seek(0) data = h.read() print(data)C:\Python35\python.exe F:/PyCharm/Python/PY_learn/lianxi.pysam222 |
小结:函数可以作为另一个函数的参数传递
|
1
2
3
4
5
6
7
8
9
|
def shaw(args): print(args) return True def s2(): print('haha') return True shaw(s2) |
四、冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误(即不符合你所需要的条件)就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

示例:
|
1
2
3
4
5
6
7
8
9
|
s = [12,3,56,78,9,34]print(s)for l in range(len(s)): for i inrange(len(s) - 1): if s[i] >s[i + 1]: mid =s[i] s[i] =s[i + 1] s[i + 1]= midprint(s) |
五、递归
程序不断调用自己,当完成某个条件,退出

|
1
2
3
4
5
6
|
def s(a,b): print(a) c = a + b s(b,c) s(0,1) |
递归实例:利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者
|
1
2
3
4
5
6
7
8
|
def s(deep,a,b): if deep == 10: return a c = a + b h = s(deep +1,b,c) return hret = s(1,0,1)print(ret) |
六、python装饰器
简单理解:在不改动原代码的情况下,对当前函数添加某些功能。
原理:给原函数重新赋值到装饰器的内层函数,执行过程中装饰器的内层函数又调用了原函数,这样就做到了,在执行原函数之前和之后,还可以做些事情

1、执行装饰器(函数),并且将原函数的函数名,当做参数
2、将装饰器(函数)的返回值重新赋值给原函数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/bin/envpython#-*- coding:utf-8 -*-defwai(func): def nei(*args, **kwargs): print('在原函数前添加的新功能') ret = func(*args, **kwargs) # 原函数 print('在原函数后添加的新功能') return ret return nei @waidefindex(a1, a2): print('函数主体') return a1 + a2 index(1,2)C:\Python35\python.exeF:/PyCharm/Python/PY_learn/lianxi.py在原函数前添加的新功能函数主体在原函数后添加的新功能 |
Python全栈开发day5的更多相关文章
- python全栈开发-Day5 集合
python全栈开发-Day5 集合 一.首先按照以下几个点展开对集合的学习 #一:基本使用 1 .用途 2 .定义方式 3 .常用操作+内置的方法 #二:该类型总结 1. 存一个值or存多个值 只能 ...
- python全栈开发-Day5 元组、字典
python全栈开发-Day5 元组.字典 一.前言 首先,不管学习什么数据类型,我们都带着以下几个问题展开学习: #1:基本使用 1 .用途 2 .定义方式 3.常用操作+内置的方法 #2:该类型 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Python全栈开发【基础一】
Python全栈开发[第一篇] 本节内容: Python 的种类 Python 的环境 Python 入门(解释器.编码.变量.input输入.if流程控制与缩进.while循环) if流程控制与wh ...
随机推荐
- strace命令简单用法
strace可以显示一个程序经历的系统调用,接收到的信号等信息. 用法: 1.strace -ff -o output programName 将程序programName的写入output文件中,- ...
- Oracle补习班第四天
Everything has its time and that time must be watched. 万物皆有时,时来不可失 1,管理参数文件 参数文件分两种spfile二进制文件和pfile ...
- 菜单栏被flex页面遮挡解决办法
- 线程Thread,有参数和参数
一.不带参数的 using System; using System.Collections.Generic; using System.Text; using System.Threading; n ...
- C#位操作(转)
在C#中可以对整型运算对象按位进行逻辑运算.按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位.C#支持的位逻辑运算符如表2.9所示. 算符号 意义 ...
- 关于URLEnCode,URLDeCode,Base64,公钥私钥
1.Base64非常适合http.mime协议,所以在一些类似webservice中可以用Base64. 用法如下:传出去之前先 Convert.ToBase64String(encryptedByt ...
- 设计一个Stack,要求Push、Pop、获取最大最小值时间复杂度都为O(1)
面试的时候,面试官让设计一个栈,要求有Push.Pop和获取最大最小值的操作,并且所有的操作都能够在O(1)的时间复杂度完成. 当时真没啥思路,后来在网上查了一下,恍然大悟,只能恨自己见识短浅.思路不 ...
- android 绑定spinner键值对显示内存地址的问题
初学android,估计是.net学傻了,觉得android好麻烦. 绑定下拉菜单Spinner键值对. 参照这篇文章,地址:http://blog.csdn.net/shouliang52000/a ...
- 您只能在 HTML 输出流中使用 document.write。如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
刚刚接触JS,看到这句话时一时没搞懂,想了终于有了一些眉目,意思就是在文档加载过后,如果我们用比方说按钮的方式重新加载文档,就会把文档都覆盖: 列如: <!DOCTYPE html> &l ...
- Linux 任务计划
一.配置cron实现自动化 使用cron实现任务自动化可以通过修改/etc/crontab文件以及使用crontab命令实现,其结果是一样的. 1./etc/crontab文件实现自动化 cron守护 ...