函数相关的

# 生成器相关的
# 例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. clone()与clone(true)的用法

    clone() 方法生成被选元素的副本,包含子节点.文本和属性. 使用 clone(true) 方法在clone()的基础上还包括克隆元素的事件处理器.

  2. Laravel通过用户名和密码查询

    一.如果要检查要验证的用户数据是否正确,可以使用: if (Auth::validate($credentials)) { // } 二.但是如果您想通过用户和密码从数据库中获取用户,您可以使用: / ...

  3. Mac配置环境变量时终端显示bash-3.2解决方案

    1.问题描述 (base) -bash-3.2$ vi ~/.bash_profile (base) -bash-3.2$ source ~/.bash_profile 2.解决方案 无授权转,侵权删 ...

  4. C/C++ Windows API——获取系统指定目录(转)

    原文地址:C/C++ Windows API——获取系统指定目录 经测试,在win10 VS2017中用wprintf()输出正常,SHGetSpecialFolderPath函数也正常运行 但是用M ...

  5. 虚拟磁盘VHD文件压缩方法

    问题描述 因工作需要在Mac上跑了一个VirtualBox虚拟win7,使用对win系统友好的vhd格式作为虚拟硬盘.经过一段时间使用发现vhd占用空间远大于虚拟磁盘使用量,想办法减减肥才行. 步骤整 ...

  6. 为QT应用程序添加图标 转

    第1,第2种方法经本人验证可行 1:通过qmake生成makefile实现过程: (1) 找到一张图片.ico,名字改为myappico.ico: (2) 创建一个新的文本文档,内部添加  IDI_I ...

  7. LaTeX 文字带边框

    1.使用framed宏包 \usepackage{framed} 可以使用verb|...|和verbatim环境而不使用cprotect宏包的cprotect命令 \begin{framed} \v ...

  8. 杭电1087 Super Jumping! Jumping! Jumping!(初见DP)

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  9. Action路径问题

    上网搜了一下,先给个解决方案,贴个图保存,后面再专门写一写总结.

  10. 创建pod失败分析