python原生基础
文章平均质量分 57
千翻娃儿
这个作者很懒,什么都没留下…
展开
-
python迭代器与生成器详解
python迭代器与生成器详解__iter__和__next__先看一个开发中常见的for循环的使用:a=[1,2,3]for i in a: print(i)123a是一个列表,本身也是一个迭代器(iterator);for循环能够遍历的一定是iterator,在遍历时会默认调用迭代器的iter()方法,将其显示出来,即等价于:for i in iter(a): print(i)123在理解迭代器之前,必须要理解魔法方法__iter__和__next__的调用原创 2021-07-11 13:57:05 · 179 阅读 · 0 评论 -
python内置的几个高阶函数
python内置的几个高阶函数python中一切皆可以为对象;而高阶函数的含义为其传入的参数中包含函数对象,接收函数对象为参数的函数为高阶函数。python中有几个内置的高阶函数,包括map(),sorted(),filter();早前的python版本中还有内置的reduce(),现在该函数被放在functools模块中了。map()函数在之前的文章中已经详细讲过了,详情参考https://blog.csdn.net/Always_Go_/article/details/118425093补充的一原创 2021-07-10 11:52:24 · 406 阅读 · 0 评论 -
位置参数、关键字参数、*,**
位置参数、关键字参数、*,**python中函数的参数主要有位置参数和关键字参数,同时可以通过*和**的使用来实现不定数量的位置参数、不定数量的关键字参数以及强制关键字参数传入。位置参数调用函数时根据函数定义的参数位置来传递参数。def func(a,b): print('a:%s,b:%s'%(a,b))>>>func(1,2)#参数1是第一个参数,传给的是a;参数2是第二个参数,传给的是ba:1,b:2>>>func(2,1)a:2,b:1原创 2021-07-07 23:57:08 · 431 阅读 · 0 评论 -
python魔法方法长文详解
python魔法方法详解1. 什么是魔法方法魔法方式(Magic methods)是python的内置函数,一般以双下划线开头和结尾,比如__add__,__new__等。每个魔法方法都有对应的一个内置函数或者运算符。当我们个对象使用这些方法时,相当于对这个对象的这类方法进行重写(如运算符重载)。魔法方法的存在是对类或函数进行了提炼,供python解释器直接调用。当使用len(obj)时,实际上调用的就是obj.__len__方法,其它同理。如我们对某个类A定义了__add__方法,那么可以直接通过a原创 2021-07-04 19:19:18 · 1274 阅读 · 1 评论 -
python map函数详解
python map函数详解python中有些内置的高阶函数,如map(),filter(),reduce();之所以称其为高阶函数,因为这类函数接受的参数中有一个参数为函数对象。map()函数格式:map(func,seq1[,seq2,……])map函数接收的第一个参数为一个函数对象,后面接收1个或多个序列;map函数会将func作用在后面序列中的各个值上,并返回一个迭代器。举例:def func(a): return a**2>>>map(func,[1,2,3]原创 2021-07-02 23:55:26 · 3960 阅读 · 3 评论 -
python sys 模块
python sys 模块sys 模块主要提供了和python解释器进行交互的变量和函数;import sys#1. sys.argv[i],获取命令行中传入的参数,第一个为模块/程序本身的名称,从第二个元素开始才是真正的参数。 #经常用于在服务器或终端运行python脚本时传少量的定制化或配置参数;#在当前路径下创建main.py模块,内容如下:import sysa=sys.argv[1]b=sys.argv[2]print(sys.argv[0])print('a is %s,b原创 2021-07-02 10:55:58 · 213 阅读 · 0 评论 -
python os 模块
python os 模块python os模块是python提供用于访问操作系统的标准模块,对目录和文件操作提供了非常多的方法。下面对常见的一些操作进行整理:import os ##获取当前的操作系统名称,其中Windows 是 NT 内核,所以会得到nt,而 Linux/Unix 用户则会得到posix>>>os.name'nt'#获取当前工作目录>>>os.getcwd()'D:\\pycharmprojects'#获取当前目录下的所有文件及文原创 2021-06-29 23:20:00 · 112 阅读 · 0 评论 -
python 模块导入详解
python 模块导入详解在写python代码时经常会导入一些内置模块、第三方模块或者自己目录下写的模块。模块可以通过绝对路径或相对路径导入,既可以导入一整个包,也可以导入某个模块,还可以导入模块中的某个特定对象(类,函数或变量等)。而在一些大型的工程中,如果不通过一定的方式管理好包的导入,则各文件之间的导入非常混乱,极易出错。对于该工程包的外部调用者来说,如果调用的路径太深或者太乱,都很不友好。下面构造一个package目录,后续所有例子都根据该结构来进行解释和说明。项目根目录下有两个包,pack原创 2021-06-28 22:30:08 · 717 阅读 · 0 评论 -
对函数部分或全部参数进行类型检查
对函数部分或全部参数进行类型检查构建一个装饰器,通过对装饰器中传入类型参数,来对装饰的函数的对应参数进行类型检查。from inspect import signaturefrom functools import wrapsdef typeassert(*tyargs,**tykwargs): def decorator(func): #获取指定的强制类型参数 sig=signature(func) required_types=sig.b原创 2021-06-07 23:16:43 · 328 阅读 · 0 评论 -
装饰器中添加参数
一个简单场景:我有一个给函数计时的装饰器,现在我想给函数运行的时间添加一个时间偏移量time_lag,该时间偏移量不是常数,想通过把该参数传入装饰器中来实现。实现方式1:import timefrom functools import wrapsdef timer_func(func,time_lag): @wraps(func) def wer(*args,**kwargs): t1=time.time() r=func(*args,**kwar原创 2021-06-03 00:22:46 · 335 阅读 · 0 评论 -
创建装饰器时保留元信息
当写了一个装饰器作用在某个函数上时,该函数的元信息就会丢失,比如名字,文档,注解和参数签名等。举例:import timedef timer_func(func): ''' 用于对调用func函数时进行计时 :param func: 函数对象作为外函数的入参 :return: 内函数 ''' def wrapper(*args,**kwargs): t1=time.time() r=func(*args,**kwargs)原创 2021-06-01 23:56:55 · 125 阅读 · 0 评论 -
类的继承中的super()
在python中,关于类的继承有很多场景和知识点。今天聚焦在一个场景:有一个父类A,类中定义了某个问题中的通用属性和方法(即后面的子类都需要用到),在子类B中需要继承这些属性和方法,同时添加自己特有的属性和方法,应该如何实现?在子类中,继承并初始化父类属性的方式有两种:显示调用父类的初始化函数,并且对属性进行初始化;通过super()初始化父类属性;对于方式1,代码:class A: def __init__(self,a,b): self.a=a se原创 2021-05-27 00:23:42 · 433 阅读 · 0 评论 -
python中的下划线
概述python中的下划线主要分为如下几类:前置单下划线,如_a,_variable,主要是用于将变量或方法定义为私有属性。这里的私有属性并非如java中的私有,而是一种约定俗成,想强行访问仍旧可以正常访问。后置单下划线,如a_,val_,主要用于将变量区别,如变量名称和关键字冲突,后面加个下划线区别开来。前置双下划线,如__val,类中带前置双下划线的变量或方法,都会触发python解释器的名称修饰,是不能直接通过该名称去访问到的,实现了一定程度上的隔离。前后都有双下划线,如__init__,原创 2021-05-26 00:04:11 · 834 阅读 · 0 评论 -
对象名称重载\_\_str\_\_ 和\__repr__
对象名称重载__str__ 和_repr_概述在python中编写类时,经常会看到双下划线的方法,如__init__ ,__str__等。这类方法称为魔法方法,这类方法一般会自动调用,不需要class.method()的形式进行手动调用。这里简介两个用来描述对象信息/名称的魔法方法,__str__和__repr__;当我们想自定义某个对象/实例显示(打印)的名称时,就可以用这两个方法来定制,使得代码在交互或者输出时更具有可读性__str__ 的目标是可读性,在print(对象)的时候,会自动调用该魔原创 2021-05-24 23:30:53 · 142 阅读 · 0 评论 -
函数闭包入门
函数闭包入门什么是闭包闭包是一种特殊的函数,闭包一般由两个函数构成,分别为内函数和外函数,内函数会引用外函数传入的参数,而外函数返回的结果是内函数本身。比如:def func_out(a):#外函数 b=10#a,b都是外函数的变量 def func_in(c):#c是内函数的变量 return a+b+c#内函数调用外函数的变量 return func_in #返回内函数本身>>>m=func_out(1)#此时外函数传入a=1,返回的是原创 2021-05-21 23:22:15 · 156 阅读 · 0 评论 -
python函数默认参数
不可变对象作为默认参数一般来说,函数的默认参数都用不可变对象来作默认参数,如int,str,None,tuple,bool等。举例:def func(x,y=2): return x+yfunc(1)>>>print(func(1))3>>>print(func(1,10))11在实际工程中,经常会用None和bool来作默认参数,在使用None作默认参数的时候,函数内部的判断务必用:if param is None 或者 if parma==原创 2021-05-21 00:01:43 · 2933 阅读 · 1 评论 -
函数的*args和**kwargs
*args *args是为了传入任意不定数量的参数 所有的不定参数都在args里面,形成一个tuple传入函数内部 *args一般用在关键字参数后面 def func(a,*args): print(type(args)) print(args) print(a) >>>func(1)<class 'tuple'>()1>>>func(10,2,'a')<class 'tu...原创 2021-05-20 00:05:24 · 262 阅读 · 0 评论 -
python的变量,引用,对象,浅拷贝,深拷贝深度详解
1. 变量,对象和引用(1) 变量,对象和引用的概念Python中关于变量有三个概念需要明确,分别是变量,引用,对象。变量:python中的变量简而言之就是指针,变量总是存放对象的引用(或者说是对象的地址,id);因此每个变量所需要的存储空间大小一致,与所指向的对象类型无关,因为每个变量都只是保存了指向对象的内存地址。变量都没有类型(都是对象的引用),这意味着变量可以指向任何对象。变量是分配在栈上,用来指向某一个对象。变量分为可变变量和不可变变量;对象:对象就是分配的一块...原创 2021-05-18 23:14:46 · 690 阅读 · 1 评论