day14装饰器

装饰器 dwcorators(专业提高篇)
1.定义:装饰器是一个函数,主要作用是用来包装另外一个函数或类(后面会讲)
2.作用:是在不改变原函数名(或类名)的情况下改变被包装对象的行为:
函数装饰器:
定义:函数装饰器是指装饰器是一个函数,传入的是一个函数,返回的也是一个函数
语法:
def 装饰器函数名(参数):
语句块
return 函数对象
@装饰器函数名<换行>
def 函数名(形参列表):
语句块
示例:
函数的文档字符串:
定义:函数内第一次为赋值给任何变量的字符串是此函数的文档字符串
语法:
def 函数名(形参列表):
函数的文档字符串....
函数语句块
示例;
def hello():
'''此函数用来打招呼...
这是函数的的文档字符串'''
pass
help(hello)
说明:
1.文档字符串通常用来说明本函数的功能和使用方法:
2.在交互模式下,输入:help(函数名)>>>可以查看函数的文档字符串
函数的__doc__属性
__doc__属性用于记录文档字符串:
函数的__name__属性:
__name__用于记录函数的名称
函数的定义语法:
@装饰器1
@装饰器2
...
def 函数名(位置形参,*元组形参(或*),命名关键字形参,**字典形参):
'''文档字符串'''
语句块
------------------------------------------------------------------------
练习:
L = [1,2,3]
def f(n=0,lst=[]):
lst.append(n)
print(lst)
f(4,L)
f(5,L)
f(100)
f(100)
------------------------------------------------------------------------
模块:
1.定义:模块是一个包含有一系列数据,函数,类等组成的程序组
模块是一个文件,模块文件名通常以".py"结尾
2.模块的作用:
1.让一些相关的数据,函,类等有逻辑的组织在一起,使逻辑结构更加清晰
2.模块中的变量,函数和类等可提供给其他模块或程序使用
3.模块的分类
1.内置模块(builtins)在解析器的内置模块可以直接使用
2.标准模块,安装Python是已安装具可直接使用
3.第三方模块(通常为开源),需要自己安装
3.用户自己编定的模块(可以作为其他人的第三方模块)
4.模块的导入 Import
import 语句
语法:
import 模块名1 [as 模块新名1],模块名2 [as 模块新名2],....
示例:
import math #导入数学模块
import sys,os #导入sys和os模块
import copy as cp
作用:
将一个模块整体导入到当前模块中
属性用法:
模块名.属性名
help(obj) 可以查看模块的文档字符串
--------------------------------------------------------------------------------
练习:1.输入一个圆的半径,打印出这个圆的面积
2.输入一个圆的面积,打印出这个圆的半径(要求用math模块内的函数和变量)
--------------------------------------------------------------------------------
import math #导入数学模块
r = int(input("请的的输入圆的半径"))
area = math.pi * r ** 2
print("元的面积为",area)
area = float(input("请输入元的面积"))
r2 = math.sqrt(area / math.pi)
print("元的半径为",r2)
------------------------------------------------------------------------------
from import 语句:
语法:
from 模块名 import 模块属性名 [as 属性名新名1],模块属性名2 [as 属性新名2]
作用:
将某模块的一个或多个属性导入到当前模块的作用域
示例:
from math import pi
from math import sin
from math import factorial as fac
from import * 语句:
语法:
from 模块名 import *
作用:将某模块的所有属性导入到当前的模块
示例:
from math import *
s = sin(pi/2)
print(factorial(10))
dir 函数;
dir([对象]) 返回一个字符串列表:
作用:
1.如果没有参数调用,则返回当前作用域内的所有变量的列表
2.如果给定一个对象作为参数,则返回一个对象的所在变量(属性)列表
1.对于一个模块,则返回这模块的全部变量
2.对于一个类对象,返回类对象的所有变量,并递归基类对象的所有变量
3.对于其他对象,返回所有变量,类变量和基类变量
数学模块:math
文档参见:
1.变量 描述
math.e 自然对数的底e
math.pi 圆周率pi
2.函数名 描述
math.ceil(x) 对x向上取整,比如x=1.2,返回2
math.floor(x) 对x向下取整,比如x=1.2,返回1
math.sqrt(x) 返回x的平方根
math.factorial(x) 求x的阶乘
math.log(x[, base]) 返回以base为底x的对数, 如果不给出base,则以自然对数e为底
math.log10(x) 求以10为底x的对数
math.pow(x, y) 返回 x**y (x的y次方)
math.fabs(x) 返回浮点数x的绝对值
3.角度和弧度degrees互换
math.degree(x) 将弧度x转换为角度
math.radians(x) 将角度x转换为弧度
4.三角函数
math.sin(x) 返回x的正弦(x为弧度)
math.cos(x) 返回x的余弦(x为弧度)
math.tan(x) 返回x的正切(x为弧度)
math.asin(x) 返回x的反正弦(返回值为为弧度)
math.acos(x) 返回x的反余弦(返回值为为弧度)
math.atan(x) 返回x的反正切(返回值为为弧度)
时间模块:time
此模块提供了时间相关的函数
文档参见
1.变量 描述
time.altzone 夏令时时间与UTC时间差(秒为单位)
time.daylight 夏令时校正时间
time.timezone 本地区时间与UTC时间差(秒为单位)
time.tzname 时区名字的元组, 第一个名字为未经夏令时修正的时区名,第一个名字为经夏令时修正后的时区名
2.函数名 描述
time.time() 返回从计算机元年至当前时间的秒数的浮点数(UTC时间为准)
time.sleep(secs) 让程序按给定秒数的浮点数睡眠一段时间
time.gmtime([secs]) 用给定秒数转换为用UTC表达的时间元组(缺省返回当前时间元组)
time.asctime([tuple]) 将时间元组转换为日期时间字符串
time.mktime(tuple) 将本地日期时间元组转换为新纪元秒数时间(UTC为准)
time.localtime([secs]) 将UTC秒数时间转换为日期元组(以本地时间为准)
-----------------------------------------------------------------------------
练习:
写一个程序,输入您的出生日期:算出你已经出生了多少天?算出生的那天是星期几
-------------------------------------------------------------------------------
练习:
1.写一个程序,以电子时间格式显示时间:
hh:mm:ss
2.编写一个闹钟程序,启动设置定时时间,到时间以后打印时间到,然后退出
3.编写函数fun,其功能是求下列多项式的和
sn= 1+ 1/1!+1/2!+...1/n!
建议用数学模块中的math.factoral来求当n=50时sn的值为

猜你喜欢

转载自blog.csdn.net/robin13438235412/article/details/80754048
今日推荐