函数相关的

# 生成器相关的
# 例1
ll = sum(i for i in range(100000000)) #生成器占资源少
# 例2
def demo():
for i in range(4):
yield i
g = demo()
g1 = (i for i in g)
g2 = (i for i in g1)
print(list(g1)) #取值1次结束
print(list(g2))
# 例3
def add(n,i):
return n+i
def test():
for i in range(4): #0 1 2 3
yield i
g = test()
for n in [1,10]:
g = (add(n,i) for i in g)
#解析思路
# n=10
# g2 = (add(10,i) for i in ((add(10,i) for i in g))) #10 11 12 13
print(list(g))
# compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值
eval() 将字符串类型的代码执行并返回结果
print(eval('1+2+3+4')) exec()将自字符串类型的代码执行
exec("1+2+3+4") #没有返回值
exec("print('hello,world')")
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存
"""
f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True) #输出到文件里面

import time   #打印一个进度条
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', flush=True)
t = (1,2,3) #hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
l = [1,2,3]
print(hash(t)) #可hash 2528502973977326415
print(hash(l)) #会报错 TypeError: unhashable type: 'list' callable(o),o是参数/函数名,看这个变量是不是可调用。 #和调用相关的
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量 #查看参数所属类型的所有内置方法 序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
序列:reversed,slice
l = (1,2,23,213,5612,342,43)
print(l)
print(list(reversed(l))) l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
# 匿名函数lambda
t1 = (('a'),('b'))
t2 = (('c'),('d'))
# 下面3种方法
dic = [{i:j} for i,j in (zip(t1,t2))] #直接打印就行
test = lambda t1,t2:[{i:j} for i,j in zip(t1,t2)] #函数 打印取值时候要调用
test = list(map(lambda t:{t[0]:t[1]},zip(t1,t2))) #直接取值赋值变量test
def multipliers():
return [lambda x:i*x for i in range(4)] #改进的地方 是这里 []变小括号
print(list(m(2) for m in multipliers())) # 下面是一个简单的分析
lst = []
def funcs():
for i in range(4):
def func(x):
return i*x
lst.append(func)
return lst
print(list(k(2) for k in funcs()))
#测试递归  998  官方1000  定义:在一个函数里面调用自己本身
def foo(n):
print(n)
n += 1
foo(n)
foo(1)
import sys  #修改递归最大深度
print(sys.setrecursionlimit(100000))
menu = {
'北京': {
'海淀': {
'五道口': {
'soho': {},
'网易': {},
'google': {}
},
'中关村': {
'爱奇艺': {},
'汽车之家': {},
'youku': {},
},
'上地': {
'百度': {},
},
},
'昌平': {
'沙河': {
'老男孩': {},
'北航': {},
},
'天通苑': {},
'回龙观': {},
},
'朝阳': {},
'东城': {},
},
'上海': {
'闵行': {
"人民广场": {
'炸鸡店': {}
}
},
'闸北': {
'火车战': {
'携程': {}
}
},
'浦东': {},
},
'山东': {},
}
# def threeLM(dic):
# while True:
# for k in dic:
# print(k)
# key = input('input>>').strip()
# if key == 'b' or key == 'q':
# return key
# elif key in dic.keys() and dic[key]:
# ret = threeLM(dic[key])
# if ret == 'q':
# return 'q'
# threeLM(menu)
下面是堆栈的实现
# l = [menu]
# while l:
# for key in l[-1]:print(key)
# k = input('input>>').strip() # 北京
# if k in l[-1].keys() and l[-1][k]:l.append(l[-1][k])
# elif k == 'b':l.pop()
# elif k == 'q':break
各种序列的解压
a,*_=(1,2,3,4) #a=1
*_,d=(1,2,3,4) #d=4
a,b,c = (1,2,3)
a,b,c = [1,2,3]
a,b,c = {1,2,3}
a,_b= {'name':'Ray','age':11} #a=name b=age
参数陷阱:默认参数是一个可变数据类型
def func(x,lst=[]): 列表
lst.append(x)
print(lst)
func('Ken') #['Ken']
func('Ray') #['Ken', 'Ray'] def func(x,dic={}): 字典
dic.update(x)
print(dic)
func({'k':'v'}) #{'k': 'v'}
func({'x':'m'}) #{'k': 'v', 'x': 'm'} def func(x,dic={1}): 集合
dic.add(x)
print(dic)
func(2) #{1,2}
func(3) #{1,2,3}
*args  按位置传参,接收多余的参数,保存成元组形式
**kwargs 按关键字传参,接收多余的,保存成字典形式 def 函数名(参数1,参数2,*args,默认参数,**kwargs):
"""注释:函数功能和参数说明"""
函数体
……
return 返回值

py2的更多相关文章

  1. python py2与py3的编码问题

    一:什么是编码 将明文转换为计算机可以识别的编码文本称为"编码".反之从计算机可识别的编码文本转回为明文为"解码". 那么什么是明文呢,首先我们从一段信息说起, ...

  2. Python 高度定制化自己的线程类和进程类代码,获取启动进程或线程方法的结果(兼容Py2和Py3)

    #encoding=utf-8 from threading import Thread from multiprocessing import Process import multiprocess ...

  3. py2与py3区别总结

    1. py2中的str是py3中的bytes py2中的Unicode是py3中的str 声明一个字符串变量时,py2 和py3都是str类型,但py2代表字节类型,py3代表文本类型 隐式转换: p ...

  4. 1.python虚拟环境的安装-用以同时使用py2,py3

    第一步:安装环境支持[linux下在前加sudo] http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl pip install virtualenv 第 ...

  5. python模块之lib2to3(py2转py3自动化工具)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之lib2to3(py2转py3自动化工具) #http://tieba.baidu.com ...

  6. [py]py2自带Queue模块实现了3类队列

    py2自带Queue实现了3类队列 先搞清楚几个单词 Queue模块实现了三类队列: FIFO(First In First Out,先进先出,默认为该队列), 我们平时泛指的队列, LIFO(Las ...

  7. 用python实现一个简单的socket网络聊天通讯 (Linux --py2.7平台与windows--py3.6平台)

    windows   --> windows 写法均在py3.6 客户端写法 import socket client = socket.socket() client.connect(('192 ...

  8. ubuntun16.04+cuda9.0+cudnn7+anaconda3+pytorch+anaconda3下py2安装pytorch

    一.电脑配置 说明: 电脑配置: LEGION笔记本CPU Inter Core i7 8代GPU NVIDIA GeForce GTX1060Windows10 所需的环境: Anaconda3(6 ...

  9. Anaconda3+python3环境下如何创建python2环境(win+Linux下适用,同一个anaconda下py2/3共存)

    本人之前已经在anaconda环境下已经安装了python3的环境,现在因为一些需求,要安装python2环境 1.打开anaconda的anaconda prompt查看当前环境: conda in ...

  10. 字符编码py2,py3操作,SecureCRT的会话编码的设置

    对之前的字符串类型和二进制类型(bytes类型),可以这样关联记忆,把字符串类型当作是Unicode,把bytes类型当作是GBK或者UTF-8或者是日文编码.这样字符串要转成二进制,那么就需要编码e ...

随机推荐

  1. Python标准库之shelve模块(序列化与反序列化)

    shelve模块是一个简单的key,value将内存数据通过文件持久化的模块,可以持久化任何picklel可支持的Python数据格式. 序列化 序列化源代码: import shelve impor ...

  2. JS高级---递归案例

    递归案例     递归案例: 求一个数字各个位数上的数字的和:  123   --->6 ---1+2+3 //递归案例:求一个数字各个位数上的数字的和: 123 --->6 ---1+2 ...

  3. 虚拟机win7 安装过程中遇到虚拟工具安装失败

    如果遇见这样的问题 倘若你用的是这样的镜像:cn_windows_7_enterprise_x64_dvd_x15-70741.iso 换镜像源.换镜像源.换镜像源! 换成带sp1的iso镜像:cn_ ...

  4. dijkstra算法为什么不能处理带有负边权的图

      1 2 3 1 0 8 9 2 10 0 10 3 10 -2 0 先看样例再解释,看邻接矩阵会发现, 如果用dijkstra算1-2的最短路因为贪心思想所以得到的结果是8,但明显可以看到1-3- ...

  5. C语言中各数据类型(eg.int和float的区别)

  6. pycharm项目移植过程中遇到的问题

     调试中遇到三个问题: 问题1:Error running 'run_all_test': Cannot run program "C:\Users\Administrator\.virtu ...

  7. Postgresql 教程

    Official 教程 关闭postgresql服务 PostgreSQL帐号 1. PostgreSQL 用户帐号和操作系统用户帐号是不同的,系统用户帐号是postgres. sudo -u pos ...

  8. 使用Vue-MUI轮播图失效问题解决案例(在Vue的update中执行)

    我使用的是mui+vue,社区关于轮播图失效的问题也有几个.我这边遇到的一个情况是我把所有的东西都写到plusReady事件中会导致轮播图搞死都不动,按照其他问答解决了vue生命周期等等的问题.提出来 ...

  9. 一则关于控制文件全部丢失后如何重新编目RMAN元数据的简单实验

    主题:一则简单的RMAN元数据编目实验,来自于博客园AskScuti. 场景:RMAN备份完整情况下,未使用Catalog目录库.删除了所有的控制文件,在手工重建后,导致记录在控制文件中的RMAN备份 ...

  10. ps怎么把一种颜色变成另一种颜色

    使用软件:PS CC版 使用Photoshop 将图片中的一种颜色变成另一种颜色的两种方法: 1.打开图片,Ctrl+J复制一份: 2.执行菜单-选择-色彩范围,使用吸管和吸管+选取图片颜色部分,点确 ...