# int
# print(int(3.6)) # 3
# float
# print(float(3.6),type(3.6)) # 3.6 <class ‘float‘>
# complex 复数
# print(complex(1,2)) # (1+2j)
# divmod 计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。***
# print(divmod(10,3)) # (3, 1)
# round 保留浮点数的小数位数 **
# print(round(3.1415926535,3)) # 3.142
# pow 求x的y次幂.(三个参数为x**y的结果对z取余)**
# print(pow(2,3)) # 8
# print(pow(2,3,3)) # 2
# bytes ***
# s1 = ‘哈哈‘
# b = s1.encode(‘utf-8‘)
# print(b) # b‘\xe5\x93\x88\xe5\x93\x88‘
# b = bytes(s1,encoding=‘utf-8‘)
# print(b) # b‘\xe5\x93\x88\xe5\x93\x88‘
# ord:输入字符找该字符编码的位置
# ascil Unicode
# print(ord(‘a‘)) # 97
# print(ord(‘中‘)) # 20013
# chr:输入位置数字找出其对应的字符
# print(chr(97)) # a
# print(chr(20013)) # 中
# repr 返回一个对象的string形式(原形毕露)。***
# s1 = ‘hhhh‘
# print(s1) # hhhh
# print(repr(s1)) # ‘hhhh‘
# msg = ‘我叫%r‘%(s1)
# print(msg) # 我叫‘hhhh‘
# all:可迭代对象中,全都是True才是True
# l1 = [1,2,3,‘hhh‘,True,[1,2],‘‘]
# print(all(l1)) # False
# any:可迭代对象中,有一个True 就是True
# s1 = [0,‘hhh‘,[],False,‘‘]
# print(any(s1)) # True
# print(self, *args, sep=‘ ‘, end=‘\n‘, file=None)
# print(1,2,3,4)
# print(1,2,3,4,sep=‘_‘) # 1_2_3_4
#
# print(1,end=‘ ‘)
# print(2)
# # 1 2
# list
# l1 = [1,2,3,4]
# l2 = list()
# dict 创建字典的几种方式
# 直接创建
# 元组的结构
# dic = dict([(1,‘one‘),(2,‘two‘),(3,‘three‘)])
# print(dic)
#
# dic = dict(one=1,two=2)
# print(dic)
# fromkeys
# updata
# abs 绝对值 ***
# print(abs(-6)) # 6
# sum 求和 ***
# l1 = [i for i in range(10)]
# print(sum(l1)) # 45
#
# print(sum(l1,100)) # 145
# reversed 返回翻转的迭代器 ***
# l1 = [i for i in range(10)]
# l1.reverse() # 翻转
# print(l1)
# l1 = [i for i in range(10)]
# obj = reversed(l1)
# print(obj)
# print(list(obj))
# zip 拉链方法 ***
# l1 = [1,2,3,4,5]
# tu1 = (‘zs‘,‘ls‘,‘ww‘)
# s1 = ‘abcd‘
# obj = zip(l1,tu1,s1)
# print(obj)
# for i in obj:
# print(i)
# # (1, ‘zs‘, ‘a‘)
# # (2, ‘ls‘, ‘b‘)
# # (3, ‘ww‘, ‘c‘)
# print(list(obj)) # [(1, ‘zs‘, ‘a‘), (2, ‘ls‘, ‘b‘), (3, ‘ww‘, ‘c‘)]
# ************** 以下最最最重要
# min max
l1 = [11,2,-1,55,100,-3]
# print(min(l1)) # -3
# 以绝对值的方式求最小值
# l2 = []
# func = lambda a:abs(a)
# for i in l1:
# l2.append(func(i))
# print(min(l2))
# def abss(a):
# return abs(a)
# print(min(l1,key=abss)) # -1
# dic = {‘a‘:3,‘b‘:2,‘c‘:1}
# 求出值最小的键
# print(min(dic)) # a # min默认会按照字典的键去比较大小
# def func(args):
# ‘‘‘
# 第一次:
# args: ‘a‘ 返回值:dic[‘a‘] 记录:3
# 第二次:
# args: ‘b‘ 返回值:dic[‘b‘] 记录:2
# 第一次:
# args: ‘c‘ 返回值:dic[‘c‘] 记录:1
# ‘‘‘
# return dic[args]
# print(min(dic,key=func))
# 优化
# print(min(dic,key=lambda args:dic[args]))
# l2 = [(‘zs‘,18),(‘ls‘,33),(‘ww‘,22),(‘kk‘,30)]
# print(min(l2)) # (‘kk‘,30)
# print(min(l2,key=lambda x:x[-1])) # (‘zs‘, 18)
# sorted
# l1 = [11,22,33,1,5,8,7]
# l2 = sorted(l1)
# print(l1) # [11, 22, 33, 1, 5, 8, 7]
# print(l2) # [1, 5, 7, 8, 11, 22, 33]
# l2 = [(‘zs‘,18),(‘ls‘,33),(‘ww‘,22),(‘kk‘,30)]
# print(sorted(l2)) # [(‘kk‘, 30), (‘ls‘, 33), (‘ww‘, 22), (‘zs‘, 18)]
# print(sorted(l2,key=lambda x:x[-1])) # 返回列表 [(‘zs‘, 18), (‘ww‘, 22), (‘kk‘, 30), (‘ls‘, 33)]
# print(sorted(l2,key=lambda x:x[-1],reverse=True)) # [(‘ls‘, 33), (‘kk‘, 30), (‘ww‘, 22), (‘zs‘, 18)]
# filter 类似列表推导式的筛选模式
# l1 = [2,3,4,1,6,7,8]
# print([i for i in l1 if i > 3]) # [4, 6, 7, 8] # 返回列表
# ret = filter(lambda x:x > 3,l1) # 返回的是迭代器
# print(list(ret)) # [4, 6, 7, 8]
# map 列表推导式的循环模式
# l1 = [1,4,9,16,25]
# print([i**2 for i in range(1,6)]) # [1, 4, 9, 16, 25] # 返回列表
# ret = map(lambda x:x**2,range(1,6)) # 返回的是迭代器
# print(list(ret)) # [1, 4, 9, 16, 25]
# reduce
from functools import reduce
def func(x,y):
‘‘‘
第一次: x y: 11 2 x + y = 记录:13
第二次: x = 13 y = 3 x + y = 记录:16
第三次: x = 16 y = 4 x + y = 记录:20
‘‘‘
return x + y
l = reduce(func,[11,2,3,4])
print(l)
? 比如大众推出了一款新车:小白轿车。
? 第一天价格为:100000元,平均收盘价:100000元
? 第二天价格为:110000元,平均收盘价:(100000 + 110000)/2 元
? 第三天价格为:120000元,平均收盘价:(100000 + 110000 + 120000)/3 元
# 方案一
l1 = [] # 全局变量 数据不安全
def make_averager(new_value):
l1.append(new_value)
total = sum(l1)
averager = total/len(l1)
return averager
print(make_averager(100000))
print(make_averager(110000))
# 很多代码。。。。可能受影响
print(make_averager(120000))
print(make_averager(90000))
# 方案二:数据安全, l1 不能是全局变量
# 闭包
def make_averager():
l1 = []
def averager(new_value):
l1.append(new_value)
total = sum(l1)
return total/len(l1)
return averager
avg = make_averager() # averager
print(avg(100000))
print(avg(110000))
# 闭包
# 1.闭包只能存在嵌套函数中
# 2.内层函数对外层的非全局变量的引用,就会形成闭包
# 被引用的非全局变量也称作自由变量,这个自由变量会与内层函数产生一个绑定关系
# 自由变量不会在内存中消失。
# 闭包的作用:保证数据安全。
如何判断一个嵌套函数是不是闭包
1.闭包只能存在嵌套函数中
2.内层函数对外层的非全局变量的引用,就会形成闭包
# # 例一:
# def wrapper():
# a = 1
# def inner():
# print(a)
# return inner
# ret = wrapper()
# # 是闭包
# # 例二:
# a = 2
# def wrapper():
# def inner():
# print(a)
# return inner
# ret = wrapper()
# # 不是闭包
# # 例三:
#
# def wrapper(a,b):
# def inner():
# print(a)
# print(b)
# return inner
# a = 2
# b = 3
# ret = wrapper(a,b)
# # 是闭包
如何用代码获取闭包:
# 如何用代码获取闭包
# 函数名.__code__.co_freevars 查看函数的自由变量
# def wrapper(a,b):
# def inner():
# print(a)
# print(b)
# return inner
# a = 2
# b = 3
# ret = wrapper(a,b)
# print(ret.__code__.co_freevars) # (‘a‘, ‘b‘)
重点:什么是闭包?闭包有什么作用?
原文:https://www.cnblogs.com/szheng/p/13154589.html