函数相关的

# 生成器相关的
# 例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. Devxtreme 显示Master-Detail数据列表, 数据显示颜色

    ////刷新3/4簇Grid //function GetClusterGrid(id, coverageId, clusterId) { // var region = getRegionCityN ...

  2. php处理复选框

    1.HTML <form action="getData.php" method="post" enctype="multipart/form- ...

  3. C编译过程

    system()调用系统命令 C语言源代码——> 预编译(1.去掉注释:2.包含文件)——> gcc -o a.o a.c 编译(编译成二进制质量)——> 链接系统库函数——> ...

  4. sencha Architect 3.2及以下版本都适用的 破解方法

    找到 没有的话 打开隐藏文件夹 C:\Users\ll\AppData\Local\Sencha\Sencha Architect 3.2 用编辑器 打开user.license 把 Print 修改 ...

  5. 2019-08-17 纪中NOIP模拟B组

    T1 [JZOJ3503] 粉刷 题目描述 鸡腿想到了一个很高(sha)明(bi)的问题,墙可以看作一个N*M的矩阵,有一些格子是有污点的.现在鸡腿可以竖着刷一次,覆盖连续的最多C列,或者横着刷一次, ...

  6. hdu 5917

    题意:给你一个无向图,问图中有多少个符合条件的集合?条件为这个集合里面存在一个子集(大小>=3)为团或者都是孤立点.答案mod1e9+7: 根据 Ramsey定理,大于等于6个的集合,肯定存在一 ...

  7. python2下解决json的unicode编码问题

    基础知识:   序列化——json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为json字符串)   反序列化—— ...

  8. 一点点学习PS--实战四

    本节实战,较为基础,主要是设置画布大小.字体的输入 1.工具使用 文字工具:直排文字工具,竖排文字 2.重点: (1)画影子: ----人物图层拷贝,CTRL+T,右键选择垂直翻转,拖拽出来,即可得到 ...

  9. 跨站跟踪攻击(CST/XST)

    XSS与httponly 正常情况下,客户端脚本(如JS脚本)是可以通过document.cookie函数获得,这样如果有XSS跨站漏洞,cookie很容易被盗取.浏览器有一个安全策略,通过设置coo ...

  10. css 页面滚动 多背景固定不动

    经常看到一些网站,滚动页面但是背景图不会跟着滚动,好像一直固定在浏览器窗口,感觉挺酷的,哇哦 ~ ~ 原来都是 background-attachment 这位大兄弟的功劳 background-at ...