forth day——杂记

模块

经常使用有:random,sys,os,math

  • 一个文件即为一个模块
  • py文件的无后缀的文件名就是模块名
  • 使用模块名.变量名就可以在当前文件引用该变量

导入模块

  • 第一种方式:直接导入模块名:import mycode

  • 第二种方式:可以指定导入哪些变量或者函数、类
    from mycode import var,show,A

  • 可以使用*替代明确指定
    from mycode import *

  • 第三种方式,导入后取一个别名

    from mydouble import MyFirstStudentClass as MyClass
    myclass = MyClass()
    myclass.myprint("ok")
    复制代码
  • 使用路径.语法从包中导入模块

  • 创建目录,放上一个_init_.py文件 这个_init_.py可以为空,也可以为初始化的程序
    有了_init_.py的文件夹叫做模块包

    from module1.module1 import *
    res = mysub(10,9)
    print(res)
    复制代码

装饰器

#装饰器案例

DEBUG = True

def decorator_1(func):
	def decorator_nest(*args, **kwargs):
		print("调试装饰器")
		print("调试状态")
		print(args,kwargs)
		print("*"*20)
		return func(*args, **kwargs)
	if DEBUG:
		return decorator_nest
	else:
		return func
		
def login_required(func):
	def decorator_nest(*args, **kwargs):
		print("登录装饰器")
		if "userid" not in kwargs:
			print("您尚未登录,禁止访问")
			return None
		else:
			print("欢迎回来")
			return  func(*args,**kwargs)
	return decorator_nest
		
@login_required
@decorator_1
def myfun(*args,**kwargs):
	print(args,kwargs)
	
	
myfun("hello","world",userid=10)
复制代码

递归&冒泡

递归函数实现斐波拉切数列

def fb2(num):
	if num <= 0:
		retrun
	if num <= 2:
		return 1
	else:
		return fb2(num-1) + fb2(num+1)
复制代码

冒泡排序

lists = [10,8,5,6,3,2,4,7,9,1]
for i in range(0, len(lists)):
	print(lists[i])
	for n in range(i, len(lists)):
		if lists[i] < lists[n]:
			lists[i], lists[n] = lists[n], lists[i]
print(lists)
复制代码

多态

多态就是同一种行为因为对象不同,执行方式不同

  • issubclass(类1,(类…)——检查类1是不是其他类的子类
  • isinstance(实例,类)——检查某个类是不是其他类的实例

元类

之前创建的类即是object的子类又是object的实例,是一个类类型的实例,object就是一个元类
所有的类其实都是创建的type的实例 type(类名,基本元组类型,包含属性与方法的字典类型)

class A:
	pass

B = type("B", (A,),{'sex':1})
复制代码
  • _new_的第一个参数是类的自身
  • 从type继承
  • 类可以动态创建
  • _new_的方法用于动态创建类
class A(type):
	def _new_(cls):
		return type("B",(),{'sex':"BB"})
	def _init_(self):
		print(self)
	
a =A()
复制代码
  • _new_的参数从第二个参数开始

转载于:https://juejin.im/post/5c97afecf265da60f5611ada

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值