2016/09/19

1. Python视频

1) 多层装饰器

USER_INFO = {}

def check_login(func):
	def inner(*args, **kwargs):
		if USER_INFO.get(‘is_login‘, None):
			ret = func(*args, **kwargs)
			return ret
		else:
			print(‘please login‘)
	return inner

def check_admin(func):
	def inner(*args, **kwargs):
		if USER_INFO.get(‘type‘, None) == 2:
			ret = func(*args, **kwargs)
			return ret
		else:
			print(‘no permission‘)
	return inner

@check_login
@check_admin
def index():		# manager
	print(‘Index‘)

def home():			# user
	print(‘home‘)

def login():
	user = input(‘input username\n>>>‘)
	pwd = input(‘input password\n>>>‘)
	if user == ‘admin‘ and pwd == ‘admin‘:
		USER_INFO[‘is_login‘] = True
		USER_INFO[‘type‘] = 2
	else:
		if user == ‘wayne‘ and pwd == ‘phuck‘:
			USER_INFO[‘is_login‘] = True
			USER_INFO[‘type‘] = 1

def main():
	while True:
		inp = input(‘1.login 2.information 3.management\n>>>‘)
		if inp == ‘1‘:
			login()
		elif inp == ‘2‘:
			home()
		elif inp == ‘3‘:
			index()

main()

2) 字符串格式化
  - 百分号方式
    %[(name)][flags][width].[precision]typecode
    1.顺序传入参数
    2.指定名称传入参数
    3.保留小数点后几位
    4.如果出现占位符,只写%%,打印时%
  - Format方式
    [[fill]align][sign][#][0][width][,][.precision][type]

# s1 = ‘i am %s‘ %‘alex‘
# s1 = ‘i am %s age %d‘ %(‘alex‘,18)
# s1 = ‘i am %(name)s age %(age)d‘ %{‘name‘:‘alex‘,‘age‘:18}
# s1 = ‘percent %.2f‘ %99.97623
# s1 = ‘i am %(pp).2f‘ %{‘pp‘:123.425556}
# s1 = ‘i am %.2f %%‘ %123.43556
# print(s1)

s1 = ‘i am {}, age {}, {}‘.format(‘seven‘,18,‘alex‘)
s1 = ‘i am {}, age {}, {}‘.format(*[‘seven‘,18,‘alex‘])
s1 = ‘i am {0}, age {1}, really {0}‘.format(‘seven‘,19)
s1 = ‘i am {0}, age {1}, really {0}‘.format(*[‘seven‘,19])
s1 = ‘i am {name}, age {age}, really {name}‘.format(name=‘seven‘,age=20)
s1 = ‘i am {name}, age {age}, really {name}‘.format(**{‘name‘:‘seven‘,‘age‘:20})
s1 = ‘i am {0[0]}, age {1[1]}, really {0[2]}‘.format([1,2,3],[11,22,33])
s1 = ‘i am {:s}, age {:d}, money {:f}‘.format(‘seven‘,18,8888.1)
s1 = ‘i am {:s}, age {:d}‘.format(*[‘seven‘,18])
s1 = ‘i am {name:s}, age {age:d}‘.format(name=‘seven‘,age=18)
s1 = ‘i am {name:s}, age {age:d}‘.format(**{‘name‘:‘seven‘,‘age‘:18})
s1 = ‘numbers:{:#b},{:#o},{:#d},{:#x},{:#X},{:%}‘.format(15,15,15,15,15,15,87623,2)
s1 = ‘numbers:{0:b},{0:o},{0:d},{0:x},{0:X},{1:%}‘.format(15,16)
s1 = ‘numbers:{num:b},{num:o},{num:d},{num:x},{num:X},{num:%}‘.format(num=15)

print(s1)

  

3) 生成器
  - 一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator);

  - 如果函数中包含yield语法,那这个函数就会变成生成器;  

>>> def func():
... yield 1
... yield 2
... yield 3
... yield 4
...
>>>
>>> temp = func()
>>> temp
<generator object func at 0x00000207CC064A40>
>>> temp.__next__()
1
>>> temp.__next__()
2
>>> temp.__next__()
3
>>> temp.__next__()
4
>>> temp.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>

  

def func():
	print(111)
	yield 1
	print(222)
	yield 2
	print(333)
	yield 3

ret = func()
r1 = ret.__next__()  # 进入函数找到yield,获取yield后面的数据
print(r1)

r2 = ret.__next__()
print(r2)

r3 = ret.__next__()
print(r3)

# r4 = ret.__next__()
# print(r4)

  

def myrange(arg):
	start = 0
	while True:
		if start > arg:
			return
		yield start
		start += 1

ret = myrange(3)
r = ret.__next__()
print(r)
r = ret.__next__()
print(r)
r = ret.__next__()
print(r)
r = ret.__next__()
print(r)

4) 迭代器
  - 迭代器是访问集合元素的一种方式。
  - 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
  - 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。
  - 迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。
    迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。
    这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件
  - 特点:
    访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
    不能随机访问集合中的某个值 ,只能从头到尾依次访问
    访问到一半时不能往回退
    便于循环比较大的数据集合,节省内存

>>> a = iter([1,2,3,4,5])
>>> a
<list_iterator object at 0x00000207CC08FFD0>
>>> a.__next__()
1
>>> a.__next__()
2
>>> a.__next__()
3
>>> a.__next__()
4
>>> a.__next__()
5
>>> a.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

5) 递归

def mul(n):
if n>1:
res = n * mul(n-1)
return res
else:
res = 1
return res

r = mul(8)
print(r)

  

6) 模块
  - py:模块 (先导入,后使用)
  - 内置模块
  - 自定义模块
  - 第三方模块
  - 其他:类库
  - 为什么要有模块:将代码归类。
  - 导入模块的依据:

import sys
for item in sys.path:
print(item)
sys.path.append(‘E:\\‘)

  

  - 模块名称的重要性 (不要与内置模块重名)
  - 导入模块:
    单模块:import
    嵌套在文件夹下:from xxx import xxx
    from xxx import xxx as ooo
  - 第三方模块安装:
    - 通过pip3安装: pip3 install requests
    - 通过源码: $ python setup.py install
7) 模块 - 序列化
  - json 用于[字符串]和[python基本数据类型]间进行转换
  - json模块提供了四个功能: dumps, dump, loads, load

# import json

# dic = {‘k1‘: ‘v1‘}
# print(dic, type(dic))
#
# res = json.dumps(dic)  # 将python的基本数据类型转化成字符串类型
# print(res,type(res))
#
#
# s1 = ‘{"abc": 123}‘  # 外面单引号,里面双引号
# dic2 = json.loads(s1)  # 将python的字符串类型转化成基本数据类型
# print(dic2, type(dic2))

import json

li = [11,22,33]
json.dump(li, open(‘db‘, ‘w‘))  # dump:列表转化为字符串,再写入文件

li = json.load(open(‘db‘,‘r‘))  # load:读取文件,并将字符串转化为列表
print(type(li),li)

  

  - 基于天气API获取天气相关JSON数据

import requests
import json_test1

response = requests.get(‘http://wthrcdn.etouch.cn/weather_mini?city=北京‘)
response.encoding = ‘utf-8‘

print(type(response.text))

dic = json_test1.loads(response.text)
print(type(dic))

  

  - pickle

时间: 2024-10-10 00:46:23

2016/09/19的相关文章

G_S男女匹配算法(算法的第一个程序2016.09.19)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int Smallest_numberFree = 0;//记录单身的号码最低的男性 5 int i = Smallest_numberFree, n, k = -1;//n代表有多少对男女 6 7 cout << "请输出有多少对男女:"; 8 cin >> n; 9 int **Man = new int*[n], **Woma

Murano Weekly Meeting 2016.07.19

Meeting time: 2016.July.19 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: 1.Backports Link:  https://etherpad.openstack.org/p/murano-stable-backports/ 2.Convergence so both of our CI servers are running heat with convergence n

2016.09.21 公司裁员想到的

公司最近裁员,好多同事都走了. 想到了,不管在那里都要努力工作,成为该领域的专家,才能立于不败之地. 得之何喜,失之何忧. 加油,最好自己,无愧我心. 不断进步,不断上升 2016.09.21 晚 于北京朝阳

2016.1.19 DEV Express控件GirdControl使用

DEV控件在工具箱中消失处理方法 开始-->程序-->Developer Express v2009 vol 3(依据版本不同)-->Components-->Tools-->ToolboxCreator   1.点击一行选择完整一行 Run Designer->View->OptionsBehavior->EditorShowMode 设置为:Click Run Designer->View->OptionsSelection.EnableAp

【英语学习】2016.09.11 Culture Insider: Teacher&#39;s Day in ancient China

Culture Insider: Teacher's Day in ancient China 2016-09-10 CHINADAILY Today is the 32nd Chinese Teacher's Day – a festival celebrating the 2,300-year tradition of respecting teachers and education in China. It's similar to the birthday of Confucius o

翻译:Gregory Larsen,2016/02/19(第一版:2014年12月17日)高级T-SQL阶梯1级:使用CROSS JOIN介绍高级T-SQL

原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/119933/ 原文作者:Gregory Larsen,2016/02/19(第一版:2014年12月17日) 系列 本文是"Stairway Series:Stairway to Advanced T-SQL"的一部分 这个阶梯将包含一系列文章,这些文章将在前面两个T-SQL阶梯,T-SQL DML和T-SQL超越基础知识的T-SQL基础上进行扩展. 这个楼梯应

2016/09/20

1. Python序列化之pickle模块 - 用于[python特有的类型]和[python基本数据类型]间进行转换 - pickle模块提供了四个功能:dumps.dump.loads.load - json更加适合跨语言 基本数据类型的序列化  pickle仅适用于python 复杂类型的序列化 # import json # dic = {'k1': 'v1'} # print(dic, type(dic)) # # res = json.dumps(dic) # 将python的基本数

2016/09/23

1.  Configparser # configparser用于处理特定格式的文件,其本质上是利用open来操作文件. import configparser config = configparser.ConfigParser() config.read('f1',encoding='utf-8') # 获取所有节点 ret_1 = config.sections() print(ret_1) # 获取指定节点下所有的键值对 ret_2 = config.items('section1')

2016.5.19——Excel Sheet Column Title

Excel Sheet Column Title 本题收获: 1.由int型转换为整型(string),如何转化, res = 'A'+(n-1)%26和之前由A-z转化为十进制相反,res = s[i]-'A'+1.(为什么有+1,-1还有点迷糊,貌似是十进制是0-9,26进制是) 2.十进制到26进制转化 题目: Given a positive integer, return its corresponding column title as appear in an Excel shee