oldboy s21day15模块装饰器及其他应用
#!/usr/bin/env python
# -*- coding:utf-8 -*- # 1.sys.path.append("/root/mods")的作用?
"""
增加导入模块的查找路径
""" # 2.字符串如何进行反转?
'''
[::-1]
''' # 3.不用中间变量交换a和b的值。
'''
a = 1
b = 2
a, b = b, a
print(a, b)
''' # 4.*args和**kwargs这俩参数是什么意思?我们为什么要用它。
'''
*args接收多个位置参数,**kwargs接收多个关键字参数.
func(*args,**kwargs)能接收任意类型任意个参数.
''' # 5.函数的参数传递是地址还是新值?
'''
地址
''' # 6.看代码写结果:
'''
my_dict = {'a': 0, 'b': 1} def func(d):
d['a'] = 1
return d func(my_dict)
my_dict['c'] = 2
print(my_dict) # {'a':1,'b':1,'c':2}
''' # 7.什么是lambda表达式
'''
匿名函数,能一行表达一个简单的函数
lambda x : y
x为传入参数,':'后面为返回值
''' # 8.range和xrang有什么不同?
'''
在py2里,range(x)立即生成列表,xrange(x)不立即创建,边循环边创建.
在py3里,range即为py2的xrange,没有xrange
''' # 9."1,2,3" 如何变成 ['1','2','3',]
'''
s = "1,2,3"
a = s.split(',')
print(a)
''' # 10.['1','2','3'] 如何变成 [1,2,3]
'''
lst = ['1','2','3']
new_lst = [int(i) for i in lst]
print(new_lst)
''' # 11.def f(a,b=[]) 这种写法有什么陷阱?
'''
b默认值为一个空列表,列表创建在函数内存之外,易被其他改动.
''' # 12.如何生成列表 [1,4,9,16,25,36,49,64,81,100] ,尽量用一行实现。
'''
lst = [i*i for i in range(1,11)]
print(lst)
''' # 13.python一行print出1~100偶数的列表, (列表推导式, filter均可)
'''
print([i for i in range(1, 101) if i % 2 == 0]) print(list(filter(lambda i: i % 2 == 0, [i for i in range(1, 101)])))
''' # 14.把下面函数改成lambda表达式形式.
#
# def func():
# result = []
# for i in range(10):
# if i % 3 == 0:
# result.append(i)
# return result
'''
ret = lambda: [i for i in range(10) if i % 3 == 0]
print(ret())
''' # 15.如何用Python删除一个文件?
'''
# 删除文件
import os
os.remove(path) # 删除目录
import shutil
shutil.rmtree(path)
''' # 16.如何对一个文件进行重命名?
'''
import os os.rename(filename, newname)
''' # 17.python如何生成随机数?
'''
import random a = random.randint(1, 10)
print(a)
''' # 18.从0-99这100个数中随机取出10个数,要求不能重复,可以自己设计数据结构。
'''
import random ret = set()
while len(ret) < 10:
a = random.randint(0,99)
ret.add(a)
print(ret)
''' # 19.用Python实现 9*9 乘法表 (两种方式)
# 方法一
'''
for a in range(1, 10):
for b in range(1, a + 1):
if a >= b:
print('%s*%s=%s' % (b, a, a * b),end=' ')
print()
''' # 方法二
'''
a = 1
while a < 10:
b = 1
while b <= a:
print('%s*%s=%s' % (b, a, b * a), end=' ')
if a == b:
print()
b += 1
a += 1
''' # 20.请给出下面代码片段的输出并阐述涉及的python相关机制。
'''
def dict_updater(k, v, dic={}):
dic[k] = v
print(dic) dict_updater('one', 1) # one给k,1给v,输出dic={'one':1}
dict_updater('two', 2) # two给k,2给v,输出dic={'one':1,'two':1}
dict_updater('three', 3, {}) # three给k,3给v,空字典给dic,输出dic={'three':3}
# 形参为可变类型(字典,元组)时会在创建参数的外部创建元素,下次使用还会使用同一个元素.
''' # 21.写一个装饰器出来。
'''
def wrapper(arg):
def inner(*args,**kwargs):
return arg(*args,**kwargs)
return inner
''' # 22.用装饰器给一个方法增加打印的功能。
'''
def wrapper(arg):
def inner(*args,**kwargs):
return print(arg(*args,**kwargs))
return inner @wrapper
def func():
a = 123 func()
''' # 23.请写出log实现(主要功能时打印函数名)
'''
def log(arg):
def inner():
print('call', arg.__name__+'()')
return arg()
return inner @log
def now():
print("2013-12-25") now() # 输出
# call now()
# 2013-12-25
''' # 24.向指定地址发送请求,将获取到的值写入到文件中。
'''
import requests # 需要先安装requests模块:pip install requests
import json response = requests.get('https://www.luffycity.com/api/v1/course_sub/category/list/')
print(response.text)
new = json.loads(response.text)
# 获取结构中的所有name字段,使用逗号链接起来,并写入到 catelog.txt 文件中。
# s = [
# {'id': 1, 'name': 'Python', 'hide': False, 'category': 1},
# {'id': 2, 'name': 'Linux运维', 'hide': False, 'category': 4},
# {'id': 4, 'name': 'Python进阶', 'hide': False, 'category': 1},
# {'id': 7, 'name': '开发工具', 'hide': False, 'category': 1},
# {'id': 9, 'name': 'Go语言', 'hide': False, 'category': 1},
# {'id': 10, 'name': '机器学习', 'hide': False, 'category': 3},
# {'id': 11, 'name': '技术生涯', 'hide': False, 'category': 1}
# ]
lst = []
with open('catelog.txt', 'w', encoding='utf-8') as f:
for i in new['data']:
lst.append(i['name'])
ret = ','.join(lst)
f.write(ret)
''' # 25.请列举经常访问的技术网站和博客.
'''
github
csdn
cnblogs
''' # 26.请列举最近在关注的技术
'''
Python模块的使用
''' # 27.请列举你认为不错的技术书籍和最近在看的书(不限于技术)
'''
无
'''
oldboy s21day15模块装饰器及其他应用的更多相关文章
- Python入门-装饰器初始
今天我们就围绕一个来展开,那就是:装饰器 一.装饰器 在说装饰器之前,我们先说一个软件设计的原则:开闭原则,又被称为开放封闭原则,你的代码对功能的扩展是开放的,你的程序对修改源代码是封闭的,这样的软件 ...
- oldboy s21day14装饰器模块和面试题
# 1.为函数写一个装饰器,在函数执行之后输入 after"""def wrapper(arg): def inner(*args): arg() print('afte ...
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...
- python学习道路(day5note)(列表生成式,生成器,装饰器,常用模块)
生成列表的方式 data = [1,2,3] 需求 每个数字加上1 # data = ( x*2 for x in range(5)) print(data) 列表生成式 后面的I赋予加1操 ...
- python迭代器,生成器,装饰器,context模块
迭代器iteration 是访问集合元素的一种方式,只能往前不能往后迭代器的特点:1,访问者不需要关注迭代器内部结构,只需通过next()不断取下一个内容2,访问不能回退3,循环较大数据集合时,省内存 ...
- python3.5-day5_迭代器_生成器_装饰器_模块
笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必 ...
- python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化
1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = Fal ...
- python_way ,day5 模块,模块3 ,双层装饰器,字符串格式化,生成器,递归,模块倒入,第三方模块倒入,序列化反序列化,日志处理
python_way.day5 1.模块3 time,datetime, json,pickle 2.双层装饰器 3.字符串格式化 4.生成器 5.递归 6.模块倒入 7.第三方模块倒入 8.序列化反 ...
- python 装饰器和 functools 模块
转自:http://blog.jkey.lu/2013/03/15/python-decorator-and-functools-module/ 什么是装饰器? 在 python 语言里第一次看到装饰 ...
随机推荐
- 深入浅出KNN算法(一) KNN算法原理
一.KNN算法概述 KNN可以说是最简单的分类算法之一,同时,它也是最常用的分类算法之一,注意KNN算法是有监督学习中的分类算法,它看起来和另一个机器学习算法Kmeans有点像(Kmeans是无监督学 ...
- 转:Git Submodule管理项目子模块
使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能. 常用命令 git clone ...
- go打造以太坊合约测试框架
传送门: 柏链项目学院 1 以太坊智能合约编译 以太坊智能合约编写使用solidity语言,一般情况下我们会在remix环境下进行编译测试,在线环境相对比较稳定.如果不想用在线环境,那我们就需要自己动 ...
- ORM(二)常用字段小记
常用字段类型: AutoField:字段自增,多用于ID主键字段,每个表中只能有一个AutoField字段类型. id = models.AutoField(primary_key=True) # 设 ...
- crontab的笔试题随想
最近看到一道题目,具体如下: 下列哪个是创建一个每周三01:00~04:00每3分钟执行一次的crontab指令? A: 1,4 3 /bin/bash /home/sijiaomao/ok.sh B ...
- C#:往数据库插入/更新时候关于NUll空值的处理
前几天遇到一个问题,找了好久才找到解决办法.不过也很开心,终于解决了. 问题:前端当我数据为空的时候不赋值,传到后台也为空的时候(注意:是Null不是""),SqlCommand对 ...
- arts打卡 从排序数组中删除重复项
Algorithm 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组 ...
- Day 2 下午
[POJ 3468]A Simple Problem with Integers给定Q个数A1, ..., AQ,多次进行以下操作:1.对区间[L, R]中的每个数都加n.2.求某个区间[L, R]中 ...
- Oracle 11g全表扫描以Direct Path Read方式执行
在Oracle Database 11g中有一个新特性,全表扫描可以通过直接路径读的方式来执行(Direct Path Read),这是一个合理的变化,如果全表扫描的大量数据读取是偶发性的,则直接路径 ...
- day09(垃圾回收机制)
1,复习 文件处理 1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读写 ...