<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Always_Go_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Always_Go_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Always_Go_]]></copyright><item><title><![CDATA[python迭代器与生成器详解]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118653724</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118653724</guid><author>Always_Go_</author><pubDate>Sun, 11 Jul 2021 13:57:05 +0800</pubDate><description><![CDATA[python迭代器与生成器详解
__iter__和__next__
先看一个开发中常见的for循环的使用：
a=[1,2,3]
for i in a:
    print(i)
1
2
3

a是一个列表，本身也是一个迭代器（iterator）；for循环能够遍历的一定是iterator,在遍历时会默认调用迭代器的iter()方法，将其显示出来，即等价于：
for i in iter(a):
    print(i)
1
2
3

在理解迭代器之前，必须要理解魔法方法__iter__和__next__的调用]]></description><category></category></item><item><title><![CDATA[python内置的几个高阶函数]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118633332</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118633332</guid><author>Always_Go_</author><pubDate>Sat, 10 Jul 2021 11:52:24 +0800</pubDate><description><![CDATA[python内置的几个高阶函数
python中一切皆可以为对象；而高阶函数的含义为其传入的参数中包含函数对象，接收函数对象为参数的函数为高阶函数。python中有几个内置的高阶函数，包括map(),sorted(),filter();早前的python版本中还有内置的reduce（）,现在该函数被放在functools模块中了。
map()函数
在之前的文章中已经详细讲过了，详情参考https://blog.youkuaiyun.com/Always_Go_/article/details/118425093
补充的一]]></description><category></category></item><item><title><![CDATA[位置参数、关键字参数、*，**]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118560324</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118560324</guid><author>Always_Go_</author><pubDate>Wed, 07 Jul 2021 23:57:08 +0800</pubDate><description><![CDATA[位置参数、关键字参数、*，**
python中函数的参数主要有位置参数和关键字参数，同时可以通过*和**的使用来实现不定数量的位置参数、不定数量的关键字参数以及强制关键字参数传入。
位置参数
调用函数时根据函数定义的参数位置来传递参数。
def func(a,b):
    print('a:%s,b:%s'%(a,b))
&gt;&gt;&gt;func(1,2)#参数1是第一个参数，传给的是a;参数2是第二个参数，传给的是b
a:1,b:2
&gt;&gt;&gt;func(2,1)
a:2,b:1  ]]></description><category></category></item><item><title><![CDATA[python魔法方法长文详解]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118465913</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118465913</guid><author>Always_Go_</author><pubDate>Sun, 04 Jul 2021 19:19:18 +0800</pubDate><description><![CDATA[python魔法方法详解
1. 什么是魔法方法
魔法方式（Magic methods）是python的内置函数，一般以双下划线开头和结尾，比如__add__,__new__等。每个魔法方法都有对应的一个内置函数或者运算符。当我们个对象使用这些方法时，相当于对这个对象的这类方法进行重写（如运算符重载）。魔法方法的存在是对类或函数进行了提炼，供python解释器直接调用。当使用len(obj)时，实际上调用的就是obj.__len__方法,其它同理。
如我们对某个类A定义了__add__方法，那么可以直接通过a]]></description><category></category></item><item><title><![CDATA[python map函数详解]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118425093</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118425093</guid><author>Always_Go_</author><pubDate>Fri, 02 Jul 2021 23:55:26 +0800</pubDate><description><![CDATA[python map函数详解
python中有些内置的高阶函数，如map(),filter(),reduce()；之所以称其为高阶函数，因为这类函数接受的参数中有一个参数为函数对象。
map()函数格式：map(func,seq1[,seq2,……])
map函数接收的第一个参数为一个函数对象，后面接收1个或多个序列；map函数会将func作用在后面序列中的各个值上，并返回一个迭代器。
举例：
def func(a):
    return a**2
&gt;&gt;&gt;map(func,[1,2,3]]]></description><category></category></item><item><title><![CDATA[python sys 模块]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118407868</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118407868</guid><author>Always_Go_</author><pubDate>Fri, 02 Jul 2021 10:55:58 +0800</pubDate><description><![CDATA[python sys 模块
sys 模块主要提供了和python解释器进行交互的变量和函数；
import sys
#1. sys.argv[i],获取命令行中传入的参数，第一个为模块/程序本身的名称,从第二个元素开始才是真正的参数。
	#经常用于在服务器或终端运行python脚本时传少量的定制化或配置参数；

#在当前路径下创建main.py模块，内容如下：
import sys
a=sys.argv[1]
b=sys.argv[2]
print(sys.argv[0])
print('a is %s,b]]></description><category></category></item><item><title><![CDATA[python os 模块]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118346139</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118346139</guid><author>Always_Go_</author><pubDate>Tue, 29 Jun 2021 23:20:00 +0800</pubDate><description><![CDATA[python os 模块
python os模块是python提供用于访问操作系统的标准模块，对目录和文件操作提供了非常多的方法。
下面对常见的一些操作进行整理：
import os 
##获取当前的操作系统名称，其中Windows 是 NT 内核，所以会得到nt，而 Linux/Unix 用户则会得到posix
&gt;&gt;&gt;os.name
'nt'

#获取当前工作目录
&gt;&gt;&gt;os.getcwd()
'D:\\pycharmprojects'

#获取当前目录下的所有文件及文]]></description><category></category></item><item><title><![CDATA[python 模块导入详解]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/118313843</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/118313843</guid><author>Always_Go_</author><pubDate>Mon, 28 Jun 2021 22:30:08 +0800</pubDate><description><![CDATA[python 模块导入详解
在写python代码时经常会导入一些内置模块、第三方模块或者自己目录下写的模块。模块可以通过绝对路径或相对路径导入，既可以导入一整个包，也可以导入某个模块，还可以导入模块中的某个特定对象（类，函数或变量等）。而在一些大型的工程中，如果不通过一定的方式管理好包的导入，则各文件之间的导入非常混乱，极易出错。对于该工程包的外部调用者来说，如果调用的路径太深或者太乱，都很不友好。
下面构造一个package目录，后续所有例子都根据该结构来进行解释和说明。

项目根目录下有两个包，pack]]></description><category></category></item><item><title><![CDATA[对函数部分或全部参数进行类型检查]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117676768</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117676768</guid><author>Always_Go_</author><pubDate>Mon, 07 Jun 2021 23:16:43 +0800</pubDate><description><![CDATA[对函数部分或全部参数进行类型检查
构建一个装饰器，通过对装饰器中传入类型参数，来对装饰的函数的对应参数进行类型检查。
from inspect import signature
from functools import wraps

def typeassert(*tyargs,**tykwargs):
    def decorator(func):
        #获取指定的强制类型参数
        sig=signature(func)
        required_types=sig.b]]></description><category></category></item><item><title><![CDATA[装饰器中添加参数]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117490022</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117490022</guid><author>Always_Go_</author><pubDate>Thu, 03 Jun 2021 00:22:46 +0800</pubDate><description><![CDATA[一个简单场景：我有一个给函数计时的装饰器，现在我想给函数运行的时间添加一个时间偏移量time_lag，该时间偏移量不是常数，想通过把该参数传入装饰器中来实现。

实现方式1：

import time
from functools import wraps
def timer_func(func,time_lag):
    @wraps(func)
    def wer(*args,**kwargs):
        t1=time.time()
        r=func(*args,**kwar]]></description><category></category></item><item><title><![CDATA[创建装饰器时保留元信息]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117457616</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117457616</guid><author>Always_Go_</author><pubDate>Tue, 01 Jun 2021 23:56:55 +0800</pubDate><description><![CDATA[当写了一个装饰器作用在某个函数上时，该函数的元信息就会丢失，比如名字，文档，注解和参数签名等。
举例：
import time
def timer_func(func):
    '''
    用于对调用func函数时进行计时
    :param func: 函数对象作为外函数的入参
    :return: 内函数
    '''
    def wrapper(*args,**kwargs):
        t1=time.time()
        r=func(*args,**kwargs)]]></description><category></category></item><item><title><![CDATA[类的继承中的super()]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117308917</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117308917</guid><author>Always_Go_</author><pubDate>Thu, 27 May 2021 00:23:42 +0800</pubDate><description><![CDATA[在python中，关于类的继承有很多场景和知识点。今天聚焦在一个场景：有一个父类A，类中定义了某个问题中的通用属性和方法（即后面的子类都需要用到），在子类B中需要继承这些属性和方法，同时添加自己特有的属性和方法，应该如何实现？
在子类中，继承并初始化父类属性的方式有两种：

显示调用父类的初始化函数，并且对属性进行初始化；
通过super()初始化父类属性；

对于方式1，代码：
class A:
    def __init__(self,a,b):
        self.a=a
        se]]></description><category></category></item><item><title><![CDATA[python中的下划线]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117267420</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117267420</guid><author>Always_Go_</author><pubDate>Wed, 26 May 2021 00:04:11 +0800</pubDate><description><![CDATA[概述
python中的下划线主要分为如下几类：

前置单下划线，如_a,_variable，主要是用于将变量或方法定义为私有属性。这里的私有属性并非如java中的私有，而是一种约定俗成，想强行访问仍旧可以正常访问。
后置单下划线，如a_,val_,主要用于将变量区别，如变量名称和关键字冲突，后面加个下划线区别开来。
前置双下划线，如__val,类中带前置双下划线的变量或方法，都会触发python解释器的名称修饰，是不能直接通过该名称去访问到的，实现了一定程度上的隔离。
前后都有双下划线，如__init__,]]></description><category></category></item><item><title><![CDATA[对象名称重载\_\_str\_\_ 和\__repr__]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117235361</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117235361</guid><author>Always_Go_</author><pubDate>Mon, 24 May 2021 23:30:53 +0800</pubDate><description><![CDATA[对象名称重载__str__ 和_repr_
概述
在python中编写类时，经常会看到双下划线的方法，如__init__ ,__str__等。这类方法称为魔法方法，这类方法一般会自动调用，不需要class.method（）的形式进行手动调用。这里简介两个用来描述对象信息/名称的魔法方法，__str__和__repr__;当我们想自定义某个对象/实例显示（打印）的名称时，就可以用这两个方法来定制，使得代码在交互或者输出时更具有可读性

__str__ 的目标是可读性，在print(对象)的时候，会自动调用该魔]]></description><category></category></item><item><title><![CDATA[函数闭包入门]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117136567</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117136567</guid><author>Always_Go_</author><pubDate>Fri, 21 May 2021 23:22:15 +0800</pubDate><description><![CDATA[函数闭包入门
什么是闭包
闭包是一种特殊的函数，闭包一般由两个函数构成，分别为内函数和外函数，内函数会引用外函数传入的参数，而外函数返回的结果是内函数本身。
比如：
def func_out(a):#外函数
    b=10#a,b都是外函数的变量
    def func_in(c):#c是内函数的变量
        return a+b+c#内函数调用外函数的变量
    return func_in #返回内函数本身
&gt;&gt;&gt;m=func_out(1)#此时外函数传入a=1，返回的是]]></description><category></category></item><item><title><![CDATA[python函数默认参数]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117094122</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117094122</guid><author>Always_Go_</author><pubDate>Fri, 21 May 2021 00:01:43 +0800</pubDate><description><![CDATA[不可变对象作为默认参数
一般来说，函数的默认参数都用不可变对象来作默认参数，如int,str,None,tuple，bool等。
举例：
def func(x,y=2):
    return x+y
func(1)
&gt;&gt;&gt;print(func(1))
3
&gt;&gt;&gt;print(func(1,10))
11

在实际工程中，经常会用None和bool来作默认参数，在使用None作默认参数的时候，函数内部的判断务必用：if param is None 或者 if parma==]]></description><category></category></item><item><title><![CDATA[函数的*args和**kwargs]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117049643</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117049643</guid><author>Always_Go_</author><pubDate>Thu, 20 May 2021 00:05:24 +0800</pubDate><description><![CDATA[*args


	*args是为了传入任意不定数量的参数
	
	
	所有的不定参数都在args里面，形成一个tuple传入函数内部
	
	
	*args一般用在关键字参数后面
	


def func(a,*args):
  print(type(args))
  print(args)
  print(a)
  
&gt;&gt;&gt;func(1)
&lt;class 'tuple'&gt;
()
1
​
&gt;&gt;&gt;func(10,2,'a')
&lt;class 'tu...]]></description><category></category></item><item><title><![CDATA[python的变量，引用，对象，浅拷贝，深拷贝深度详解]]></title><link>https://blog.youkuaiyun.com/Always_Go_/article/details/117003263</link><guid>https://blog.youkuaiyun.com/Always_Go_/article/details/117003263</guid><author>Always_Go_</author><pubDate>Tue, 18 May 2021 23:14:46 +0800</pubDate><description><![CDATA[1. 变量，对象和引用

（1） 变量，对象和引用的概念

Python中关于变量有三个概念需要明确，分别是变量，引用，对象。

变量：python中的变量简而言之就是指针，变量总是存放对象的引用（或者说是对象的地址,id）；
因此每个变量所需要的存储空间大小一致，与所指向的对象类型无关，因为每个变量都只是保存了指向对象的内存地址。

变量都没有类型（都是对象的引用），这意味着变量可以指向任何对象。

变量是分配在栈上，用来指向某一个对象。

变量分为可变变量和不可变变量；

对象：对象就是分配的一块...]]></description><category></category></item></channel></rss>