函数相关的

# 生成器相关的
# 例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. Appium+python自动化-Android夜神模拟器

    前言 Android SDK虽然也自带了模拟器,但是那速度会让你怀疑人生,并且不稳定经常卡死异常.夜神模拟器可以说是android模拟器里面的一个神器. 环境安装 1.官网下载地址:https://w ...

  2. 01:认识QT

    Qt: Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特 ...

  3. 如何使用cmd操作数据库

    1.首先用win+r输入cmd打开命令工具 (https://www.mysqlzh.com/=>'mysql中文文档地址') 然后用cd 命令进入你mysql的根目录 (bin目录下) 输入命 ...

  4. 高通量计算框架HTCondor(六)——拾遗

    目录 1. 正文 1.1. 一些问题 1.2. 使用建议 2. 相关 1. 正文 1.1. 一些问题 如果真正要将HTCondor高通量计算产品化还需要很多工作要做,HTCondor并没有GUI界面, ...

  5. 【算法】状态压缩DP

    状态压缩DP是什么? 答:利用位运算(位运算比加减乘除都快!)来记录状态,并实现动态规划. 适用于什么问题? 答:数据规模较小:不能使用简单的算法解决. 例题: 题目描述 糖果店的老板一共有M 种口味 ...

  6. 编码 - 设置 win10 下 cmd 编码格式

    概述 cmd 编码格式修改 背景 之前尝试过修改 gitbash(mingw) 的 Character Set 这次尝试修改一下 cmd 的编码格式 准备 os win10.1903 1. 查看 当前 ...

  7. jQuery操作css

    jQuery addClass() 方法 向被选中元素添加class属性,参数为属性值 $("div").addClass("imp"); 也可以同时向多个元素 ...

  8. shell内置命令和外部命令的区别

    内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留 ...

  9. Unity中引入Supersocket.ClientEngine并测试

    在使用Supersocket Server的过程中,发现Server是不支持.net 3.5的. 1.Server端中的几个Command: namespace SuperSocketProtoSer ...

  10. vue -- v-model 表单绑定

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...