![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python基础
IceForest1
这个作者很懒,什么都没留下…
展开
-
局部变量与全局变量之nonlocal
nonlocal 用来指定上一层变量>>> str = "nihao">>> def test1(): str = "hello" def test2(): nonlocal str str = "world" test2() print(str) >>> print(str)nihao&原创 2018-03-07 23:18:10 · 355 阅读 · 0 评论 -
装饰器基本理论
装饰器:本质就是函数,为其他函数添加附加功能原则:1.不修改被装饰函数的源代码 2.不修改被装饰函数的调用方式装饰器 = 高阶函数+函数嵌套+闭包高阶函数的定义:1.函数接收的参数是一个函数名 2.函数的返回值是一个函数名 3.满足上述条件任意一个,都可以称之为高阶函数装饰器就是这样由来的:import time#想在不修改foo函数的前提下用一个函数测出foo函数执行的时间de...原创 2018-04-02 22:56:39 · 98 阅读 · 0 评论 -
strip函数(转载,侵删)
函数原型声明:s为字符串,rm为要删除的字符序列s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符注意:1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')例...转载 2018-04-02 23:11:30 · 184 阅读 · 0 评论 -
验证登陆来练习装饰器
user_dict = {'username':None,'login':False}#想不不修改调用方式的情况下加上验证的功能def auth_func(func): def wrapper(*args,**kwargs): if user_dict['username'] and user_dict['login']: res =func(...原创 2018-04-03 00:18:53 · 584 阅读 · 0 评论 -
闭包的概念
在一个嵌套函数中,内函数直接引用了外函数的临时变量,且外函数的返回值是内函数的引用,这样就构成了一个闭包在装饰器中比较常见,见过几次这个名词,不太清楚它的具体含义,记录一下,详细参见:https://www.cnblogs.com/Lin-Yi/p/7305364.html...原创 2018-04-03 00:27:50 · 199 阅读 · 0 评论 -
含参装饰器
就是装饰器装饰的时候可以含有参数,装饰器函数在编写的时候在最外层函数中写入形参,再加一层函数返回,内层的函数可以调用外层的形参变量带参的比较少用,这里暂时不示例代码,以后再补...原创 2018-04-03 10:28:24 · 181 阅读 · 0 评论 -
python内置模块
time模块时间戳time.time()#打印出的是秒数,从1970年开始算time.localtime()#显示的是结构化时间,当地时间time.gmtime()#显示的也是结构化时间,不过是世界标准时间将结构化时间转换成时间戳,time.mktime(time.localtime())将结构化时间转换成字符串时间,time.strftime("%Y-%m-%d %X",time.localti...原创 2018-04-03 14:41:31 · 1702 阅读 · 0 评论 -
类和对象的知识点
类.__dict__:类的属性字典类.__name__:类的名字(字符串)类.__doc__:类的文档字符串类.__base__:类的第一个父类类.__bases__:类的所有父类构成的元组类.__module__:类定义所在的模块类.__class__:实例对应的类__init__是类的内置函数,在实例化对象时__init__函数就会自动运行静态属性使用@property在方法前面(self参数...原创 2018-04-05 15:48:12 · 218 阅读 · 0 评论 -
面向对象的三大特诊:继承/封装/多态
接口继承:import abc class Dad(metaclass=abc.ABCMeta): @abc.abstractmethod def read(self): pass#接口类中的方法不需要实现#定义好这个Dad类后,使用上面的语句将其转换为...原创 2018-04-05 23:14:24 · 150 阅读 · 0 评论 -
python反射
hasattr() hasattr(object,name)判断object中有没有一个name字符串对应的方法或属性getattr(object,name,deauflt=None) 判断object中有没有name属性或方法,如果没有的话可以设置一个默认值,没有找到时会返回默认值没有的话会报错setattr(x,y,v)#设置的对象,设置的属性,设置属性对应的值delattr(x,y)#对...原创 2018-04-06 00:02:55 · 204 阅读 · 0 评论 -
类的内置属性
isinstance(obj,cls)检查obj是否是类cls的对象issubclass(sub,super)检查sub类是否是super类的子类__getattribute__ 属性有和没有都会触发,有__getattribute__就不会再执行__getattr__,可以用raise抛出一个异常...原创 2018-04-06 13:39:54 · 193 阅读 · 0 评论 -
解压序列,想单独取头或者取尾时采用
>>> l = [1,2,3,4,5,6,7,89,100]>>> a,*_,d=l>>> a1>>> d100>>> a,*b,d=l>>> a1>>> b[2, 3, 4, 5, 6, 7, 8原创 2018-04-02 22:43:27 · 152 阅读 · 0 评论 -
函数
def func(a,b,*args):#不定长参数 sum = a+b for i in args: sum+=i print(sum)func(5,7)func(2,3,5)#**kwargs代替的参数是键值对参数,返回的是字典形式#参数的位置没有命名的放在左边,有命名的放在右边,不定长参数的位置,*args放在左边,**kwargs放在右边...原创 2018-04-02 17:18:49 · 96 阅读 · 0 评论 -
集合set
把不同的元素集合在一起,重点是不同,set具有去重性集合的创建:只能通过关键字set来创建set(),set函数内的参数必须是iterable -- 可迭代对象对象,像这样会报错的集合的分类:可变集合、不可变集合可变集合set,可以添加可删除元素,set这个整体是非可hash的,不能做字典的键,也不能做其他元素的集合不可变集合frozenset:不能添加删除元素集合的访问:集合本身是无序的,所以集...原创 2018-04-02 11:36:53 · 91 阅读 · 0 评论 -
pycharm常用快捷键
1、选中内容后Ctrl+?给选中内容注释原创 2018-03-06 15:05:42 · 189 阅读 · 0 评论 -
str常用方法
# 1 首字母大写# test = "aLex"# v = test.capitalize()# print(v)# 2 所有变小写,casefold更牛逼,很多未知的对相应变小写# v1 = test.casefold()# print(v1)# v2 = test.lower()# print(v2)# 3 设置宽度,并将内容居中# 20 代指总长度# * 空白未知...原创 2018-03-06 16:28:13 · 480 阅读 · 0 评论 -
python内置函数
>>> #取绝对值>>> abs(-1)1all函数,一个序列中的每个元素都为真则返回True,否则返回False,如果可迭代对象为空,则返回True>>> all([1,2,3,4])True>>> all([1,2,3,0])False>>> all([1,2,3,""原创 2018-03-31 16:15:43 · 148 阅读 · 0 评论 -
zip函数
zip函数,一一对应组成元组,不是一一对应的都不要,像拉链一样>>> list(zip(('a','b','c'),(1,2,3)))[('a', 1), ('b', 2), ('c', 3)]>>> list(zip(('a','b','c','d'),(1,2,3)))[('a', 1), ('b', 2), ('c', 3)]>>>...原创 2018-03-31 16:49:05 · 385 阅读 · 0 评论 -
max和min函数的高级用法
>>> dic = {"age1":18,"age2":25,"age33":5,"age48":852,"agesds":556}>>> max(zip(dic.keys(),dic.values()))('agesds', 556)>>> max(zip(dic.values原创 2018-03-31 17:47:21 · 4447 阅读 · 1 评论 -
python文件处理
在open函数打打开文件时,要注意编码格式,open默认的编码格式与机器的编码格式相同需要加上编码格式,f = open("你好",encoding="utf-8")print(f.read())#r,w,areadlines按行读取全部内容,存放在一个列表中writelines写入的是列表,write写入的是字符串,写入的必须是字符串,不能使数字等其他内容a是追加操作,r+可读可写,w+,a+...原创 2018-03-31 22:54:41 · 143 阅读 · 0 评论 -
三元表达式
python中的三元表达式,还是比较简单的>>> num = 10>>> res = '正数' if num >= 0 else '负数' #如果表达式的值为True,则返回第一个值,否则返回else后的值>>> res'正数'...原创 2018-04-01 19:38:59 · 254 阅读 · 0 评论 -
列表解析式
将for循环追加生成的列表用一行写出来,精简表示egg_list = []for i in range(10): egg_list.append('鸡蛋%s'%i)print(egg_list)#用列表生成式一行搞定list = ['鸡蛋%s' %i for i in range(10)]print(list)list1 = ['鸡蛋%s' %i for i in range...原创 2018-04-01 20:13:11 · 326 阅读 · 0 评论 -
深拷贝、浅拷贝
直接赋值:其实就是对象的引用(别名)。浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。浅拷贝需要涉及到数据在内存中如何存储,这部分可以看http://www.cnblogs.com/yuanchenqi/articles/5782764.html,里面有较为详细的图文讲解,深浅拷贝的例子...原创 2018-04-01 21:41:17 · 102 阅读 · 0 评论 -
迭代器、生成器
迭代器协议迭代器协议是指对象必须提供一个next方法,执行该方法用于返回迭代中的下一项,要么就引起一个StopIteration异常,从来终止迭代,也就是说迭代对象只能向下进行不能向前回滚。可迭代对象实现了迭代协议的对象(如何实现,对象内部定义一个__iter__()方法)协议是一种约定,可迭代对象实现了迭代器协议,python内部的工具如for 循环,sum,min,max等函数使用迭代器协议访...原创 2018-04-01 20:39:18 · 184 阅读 · 0 评论 -
使用Python3连接SQL server
本文将介绍如何利用Python连接数据库,获取数据库数据,本文参照https://www.cnblogs.com/baiyangcao/p/pymssql_basic.html只实现了数据库的连接,因为工作需求,这里只演示了查询数据的方法,如果有插入数据,创建表等需求,可以参照原文连接,使用的数据库是SQL server 20141.安装pymssql包:如果用的是anaconda,直接 cond...原创 2018-05-14 10:37:54 · 1897 阅读 · 1 评论