1.函数

函数定义

def  func(aa):         def:表示函数的关键字  func:函数名,即函数的名称,可根据函数名调用函数

print('.....')        print()..等等:函数体,函数中进行一系列的逻辑计算

pass                  aa:参数,为函数体提供数据

return 3            return:返回值,当函数执行完毕后,可以给调用者返回数据

func()                   执行函数

func('name')         传入一个参数执行函数

2.迭代器

迭代器是访问集合元素的一种方式

迭代器对象从集合的第一个元素开始访问直到所有元素被访问完结束。

定义一个迭代器:

name = iter(['liu','alex'])

print(name.__next__())  #每次只能取一个 3.X版本

print(name.next())  #2.X版本

3.生成器(generator)

定义:一个函数调用时返回一个迭代器,那这个函数就叫做生成器,如果函数中包含yield语法,那这个函数就会变成生成器。

 def cash_money(amount):
while amount>0:
amount -= 100
yield 100 #循环到此处时,会跳出循环并将100这个值传递给next
print("quqianlaile") atm = cash_money(500)
print(type(atm)) #本例出现yield,此时该函数变成生成器
print(atm.__next__())
print(atm.__next__())
print('hfhdfdsf')
print(atm.__next__()) <class 'generator'>
100
quqianlaile
100
hfhdfdsf
quqianlaile
100
 本列是yield实现异步
1 import time def consumer(name):
print("%s 准备吃包子" %name)
while True:
baozi = yield #此处yield可以返回和接收值,接收值时用send进行传递
print("包子【%s】来了,被[%s]吃了"%(baozi,name)) def producer(name):
c=consumer('A')
c2=consumer('B')
c.__next__()
c2.__next__()
print('开始做包子。。')
for i in range(10):
time.sleep(1)
print('做2包子')
c.send(i) #send传递值给yield
c2.send(i)
producer('liu')

4.装饰器

装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作

 def login(func):                                           def login(func):
print('welcome to..') print('welcome to..')
return func return func
@login #此处装饰器,装饰tv函数,相当于tv=login(tv)
def tv(name): def tv(name):
print('page name.[%s]...'%name) print('page name.[%s]...'%name) tv= login(tv) tv('alex')
tv('alex') @login执行login函数,把自己装饰的函数名当作参数login(tv),tv函数重新定义login(tv)返回值
 多参数装饰器demo
1 def Login(request,kargs):
print('before')
return 33
def ErrorHandle(request,kargs):
print('after') def Filter(before_func,after_func):
def outer(main_func):
def wrapper(request,kargs):
before_result=before_func(request,kargs)
main_result=main_func(request,kargs)
after_result=after_func(request,kargs)
return wrapper
return outer @Filter(Login,ErrorHandle)
def Index(requst,kargs):
print('index')
return 'home page...' Index('liu','qiang')

5.递归

递归算法是一种直接或间接的调用自身算法的过程。

def calc(n):
print(n)
if n/2 > 1:
res = calc(n/2)
print('res:',res)
print('N:',n)
return n calc(10) #斐波那契数列
def func(arg1,arg2,stop):
if arg1==0:
print(arg1,arg2)
arg3= arg1+arg2
print(arg3)
if(arg3<stop):
func(arg2,arg3,stop) func(0,1,30)

6.算法

a=i for i in range(4)<==>相当于下面的方式得出的结果

a=[]

for i in rang(4):

a.append(i)

 #简单算法
def binary_seach(data_source,find_n):
mid = int(len(data_source)/2)
if len(data_source)>1:
if data_source[mid]>find_n:
print('data in left of [%s]'%data_source[mid])
print(data_source[:mid])
binary_seach(data_source[:mid],find_n)
elif data_source[mid]<find_n:
print('data in right of [%s]'%data_source[mid])
print(data_source[mid:])
binary_seach(data_source[mid:],find_n)
else:
print('found fins_n',data_source[mid])
else:
print('cannot found')
if __name__=='__main__':
data = list(range(1,600))
print(data)
binary_seach(data,420) #二维数组算法
data=[[col for col in range(4)] for row in range(4)] #此处可以产生一个二维数组
print(data)
for i in data:
print(i) print('------------')
for r_index,row in enumerate(data):
for c_index in range(r_index,len(row)):
tmp=data[c_index][r_index]
data[c_index][r_index]=row[c_index]
data[r_index][c_index]=tmp
print('------------')
for r in data:
print(r) for i in range(len(data)):
a=[data[i][i] for row in range(4)]
print(a)

Python学习之路-Day4的更多相关文章

  1. ql的python学习之路-day4

    集合(set) 集合主要有两种用处: 1.去除相同的元素 2.关系测试,两个列表中的元素的关系 按照‘alex’讲的自己写了源码笔记,下面就直接贴出来: #!/usr/bin/env python # ...

  2. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  3. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  4. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  5. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  6. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  7. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  8. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  9. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

随机推荐

  1. Qt4.8.5 QtWebKit QWebView 用户栈检查崩溃问题的思考

    最近在项目中,发现在使用Qt4.8.5 提供的QWebView与网页交互的时候, m_pWebView->page()->mainFrame()->evaluateJavaScrip ...

  2. UNIX:高级环境编程 - 第十五章 IPC:进程间通信

    IPC(InterProcess Communication)进程间通信.为啥没有进程间通信,这是因为进程间都是同步的关系,不需要通信. 1.管道 1.1管道特点: (1)半双工的(即数据只能在一个方 ...

  3. Eclipse里面的一些常规设置

    一.Eclipse里面的默认编码是GBK,但是Android开发的编码都是UTF-8,所以一定要修改自己的工程的编码,不要坑队友哦~ (1)选中当前的工程,点击右键,如图选择(这只是改变当前工程的编码 ...

  4. Python3实现最小堆建堆算法

    今天看Python CookBook中关于“求list中最大(最小)的N个元素”的内容,介绍了直接使用python的heapq模块的nlargest和nsmallest函数的解决方式,记得学习数据结构 ...

  5. MVC4 本地正常运行,发布到IIS7->403 - 禁止访问: 访问被拒绝。

    代码编写完成,计划发布一个版本测试,没想到发布到IIS7 竟然报错“403-禁止访问”.还真第一次遇到这种问题..... 折腾了半天,终于解决. 1.提示报错403: 禁止访问: 访问被拒绝.您无权使 ...

  6. 记一次PHP7+opcache+zmq出现SIGSEGV 问题的查找(一次不成功的bug查找)

    Title:  记一次PHP7+opcache+zmq出现SEGSEGV问题的查找(一次不成功的bug查找) bug来历自述:线上代码PHP环境是5.2,为了提升性能(逼格),于是升级为PHP7并使用 ...

  7. 九月二十八JS验证

    js表单验证 js可用发来在数据被送往服务器前对HTML表单中的这些输入数据进行验证 被js验证的这些典型的表单数据有: >用户是否已填写表单中的必填项目: >用户输入的邮件地址是否是合法 ...

  8. dddddd

    (function(window){ var com = function(box){ this.box = document.querySelector(box); } window.zhangle ...

  9. Ceph剖析:定时器safetimer的实现

    定时器的作用是在指定的时间执行指定的动作.SafeTimer通过multimap数据结构维护定时项,定时项是时间和事件的Pair,定时项在map中按照定时时间从小到大排列.此外,SafeTimer使用 ...

  10. 通过ssh连接github

    1.检查是否已经存在ssh key $ cd ~/.ssh $ ls 如果该目录下存在id_rsa/id_rsa.pub/known_hosts这三个文件,则已经存在ssh key 直接跳转到第3步 ...